好的,这是我的代码:
public class First {
public static void main(String[] args) {
Object o;
Second second = new Second();
o = second;
o.doSomething();
}
}
下一页:
public class Second {
public Second() {
...
}
public static void doSomething() {
...
}
}
然后我得到NullPointerException 我怎么能得到“o”做某事? 任何帮助表示赞赏。
答案 0 :(得分:0)
你必须进行投射
((Second) o).doSomething();
答案 1 :(得分:0)
然后我得到NullPointerException
此处无法获取 NullPointerException ,因为此代码甚至无法编译。
您无法在doSomething()
上致电o
,这是对Object
而非Second
的引用。尝试将o
类型转换为Second
((Second)o).doSomething();
或在second
本身上调用它: -
second.doSomething();
此外,doSomething()
是一种静态方法,你应该做
Second.doSomething();
答案 2 :(得分:0)
以下是你的答案:
为什么要将第二分配给 o ?
public class First {
public static void main(String[] args) {
Object o = new Object();
Second second = new Second();
o = second;
// o.doSomething();
second.doSomething(); // or the following
Second.doSomething();
}
}
同样根据您的评论,您需要为其他类型的对象保留 o 的实例;当我读到它时,我想你正在使用不同类型的类,并且在运行时你不知道你将作为参数接收哪个对象。如果这是正确的,那么请查看继承的概念,也许这可以帮助您找到您想要做的事情。如果没有,那么你基本上要做的就是复制工厂模式Factory Pattern。这将允许您根据您的配置创建类的实例。
希望这有帮助。