オブジェクトのスタックがあります。このスタックで、ClassAオブジェクトとClassBオブジェクトをプッシュします。このスタックからオブジェクトを返さなければならないメソッドがあります
public Object method(Stack s){
ClassA a = new ClassA();
stack.push(a);
ClassB b = new ClassB();
stack.push(b);
while(stack has two elements) stack.pop();
return stack.pop()// I return the last element
}
問題は次のとおりです。このメソッドを呼び出すと、instanceofが機能せず、ClassAとClassBを区別できなくなります。
Object o = method(s);
if ( o instanceof ClassA){
//do something
} else if (o instanceof ClassB) {
//do something else
}
内部のmethod(Stack s)instanceofは機能しますが、外部は機能しませんが、toString()メソッドは正常に機能し、各クラスに適切な文字列を返します。