Java如何从另一个对象变量调用对象的函数
这是我的代码:Java如何从另一个对象变量调用对象的函数,java,object,Java,Object,这是我的代码: 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 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()
,它是对对象的引用,而不是对秒的引用。尝试将o
转换为Second
((Second)o).doSomething();
或者在second
本身上调用它:-
second.doSomething();
另外,doSomething()
是一种静态方法,您可能应该这样做
Second.doSomething();
以下是你的答案:
您必须初始化对象变量,然后分配Second(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的实例;当我读到这篇文章时,我想象您正在处理不同类型的类,而在运行时,您不知道将接收哪个对象作为参数。如果这是正确的,那么请回顾一下继承的概念,也许这可以帮助你完成你想要做的事情。如果没有,那么您基本上要做的就是复制工厂模式。这将允许您根据配置创建类的实例
希望这能有所帮助。这里不能出现空指针异常,代码甚至无法编译?您不能在o
上调用doSomething()。您可能需要执行second.doSomething()
1。不能对对象
变量调用doSomething
。2. doSomething
是一个静态函数,您可以直接在类上调用它:Second.doSomething()代码>。我真的建议您学习一些java教程doSomething
是一个静态函数,应该以静态方式访问,但仍然不能是…&它是从静态方法(main)调用的。所以它会正常工作…我试过了..@C.cena是的,它会正常工作。但是您通常不应该在对象上调用static
方法。它们被称为static
,原因是:)@YuanKai帮你自己一个忙,学习java教程,例如:我想把o变成其他对象