Java如何从另一个对象变量中调用对象的函数

时间:2017-04-15 14:01:50

标签: 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 static void doSomething() {
        ...
    }
}

然后我得到NullPointerException 我怎么能得到“o”做某事? 任何帮助表示赞赏。

3 个答案:

答案 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)

以下是你的答案:

  1. 您必须初始化对象变量,然后分配第二个(第二个)的实例。
  2. 正如有些人告诉你的那样, doSomething()方法是静态的,因此应该按如下方式访问: second.doSomething() Second.doSomething()(直接使用类的名称,无需实例化对象)。
  3. 为什么要将第二分配给 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();
    
    
    }
    

    }

  4. 同样根据您的评论,您需要为其他类型的对象保留 o 的实例;当我读到它时,我想你正在使用不同类型的类,并且在运行时你不知道你将作为参数接收哪个对象。如果这是正确的,那么请查看继承的概念,也许这可以帮助您找到您想要做的事情。如果没有,那么你基本上要做的就是复制工厂模式Factory Pattern。这将允许您根据您的配置创建类的实例。

    希望这有帮助。