dynamisk cast??
Jeg har en base klasse, jeg ved der bliver arvetfra den, men jeg ved ikke af hvem endnu. Imidlertid
vil jeg gerne i en base klasse metode lave et callback
til sub klassen. Det går også fint sålænge jeg kender
sub klassen, men hvad gør jeg når sub klassen er ukendt?
Jeg havde umiddelbart troet at det ikke var nødvendigt
at caste:
((SubClass)o).baseCall( this );
og altså nøjes med at skrive:
o.baseCall( this );
Her er lidt kode, og lidt output:
package callbacktosubclass;
public class BaseClass {
public BaseClass() {
System.out.println(\"BaseClass::constructor\");
}
protected void baseCall( Object o ) {
System.out.println(\"BaseClass::baseCall()\");
System.out.println( o.getClass().getName() );
// a callback to the SubClass
((SubClass)o).baseCall( this );
}
}
package callbacktosubclass;
public class SubClass extends BaseClass {
public SubClass() {
System.out.println(\"SubClass::constructor\");
super.baseCall( this );
}
protected void baseCall( Object o ) {
System.out.println(\"SubClass::baseCall()\");
System.out.println( (o.getClass()).getName() );
}
}
package callbacktosubclass;
public class Main {
public Main() {
}
public static void main( String[] args ) {
SubClass s = new SubClass();
}
}
BaseClass::constructor
SubClass::constructor
BaseClass::baseCall()
callbacktosubclass.SubClass
SubClass::baseCall()
callbacktosubclass.SubClass