Java如何从另一个对象变量呼叫对象的函数



好吧,这是我的代码:

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();

以下是您的答案:

  1. 您必须初始化对象变量,然后分配 second (第二(的实例。
  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();
    
    }
    

    }


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

希望这会有所帮助。

最新更新