好吧,这是我的代码:
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"做某事?任何帮助都将不胜感激。
您必须进行铸造
((Second) o).doSomething();
然后我得到NullpoInterException
获取 nullpoInterException 是不可能的,因为此代码甚至不会编译。
您无法在o
上调用doSomething()
,这是对Object
而不是Second
的引用。尝试将o
打字到Second
((Second)o).doSomething();
或在second
本身上调用它: -
second.doSomething();
另外,doSomething()
是一种静态方法,您可能应该做
Second.doSomething();
以下是您的答案:
- 您必须初始化对象变量,然后分配 second (第二(的实例。
- 正如某些人在上面告诉您的那样, dosomething((方法是静态的,因此应访问如下: second.dosomething((或 second.dosomething(((直接使用类的名称,无需实例化对象(。
-
为什么要分配第二 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 的实例;当我阅读时,我想您正在使用不同类型的类,并且在运行时您不知道要接收到哪个对象作为参数。如果这是正确的,请查看继承的概念,也许这可以帮助您解决您要做的事情。如果不是,那么您基本上要做的就是复制出厂模式工厂模式。这将使您可以根据配置创建类实例。
希望这会有所帮助。