Higher-Order Problems (“Objects are Multi-Entry Closures”)
Package Server:
public class A {
…
public void method1(A a) {
… }
}
public class B extends A {
…
public void method1(A a) {
B b = (B)a;
… }
}
Package Client2;
class C {
...
void method4(D d) {
…
d.method3();
…
}
Package Client1;
public class D {
A anA = A( … ) ;
B a_B = B( … ) ;
public void method3() {
... a_b.method1
(… (B)anA … )
...
anA = a_B; }
}
Object d is passed in, call to method3 triggers exception
Previous slide
Back to first slide
View graphic version