【发布时间】:2012-10-27 13:26:54
【问题描述】:
我有一堆对象,在这个堆栈中我推送 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
}
Inside method(Stack s) instanceof 有效,outside 无效,但是 toString() 方法可以正常工作,它为每个类返回正确的 String。
【问题讨论】:
-
您遇到异常了吗?或者任何编译器错误?你能把代码贴在你做instanceof检查的地方吗?方法?
-
你确定方法不返回null吗?
-
while(stack has two elements)好像也很奇怪 -
是的,应该是
while (stack has two or more than two elements) -
如果魔法 while 类似于 while (!stack.isEmpty()) 那么在调用 return stack.pop() 时你会得到一个 EmptyStackException。
标签: java object introspection