从对象中调用对象中的方法

时间:2013-05-25 18:58:44

标签: java class object methods

我有以下问题,不知道如何解决它。假设我们有一个类classA,并且在这个类中是创建类本身对象的主要方法。现在我们再来一个班,classB。在classA的构造函数中,我们创建了classB的对象。现在,在classB的方法中,我们想要调用classA

的方法

让我举一个例子。

public class classA {
    public classA() {
        //some code
        classB objectB = new classB();
    }

    public static void main(String[] args) {
        classA objectA = new classA();
        //more code
    }

    public void methodA() {
        //even more code
    }
}

public class classB {
    public void someListener() {
        //code needed to call methodA of the object objectA
    }
}

问题是:代码是什么,现在只有评论//code needed to call methodA of the object objectA

我遇到这种情况的原因是,在我将要使用它的代码中,在objectB中运行的各种方法由循环控制,但是一旦某个事情发生了一个方法在这里显示为objectA必须被调用。我该怎么做?

4 个答案:

答案 0 :(得分:2)

简单...只需将类A对象的引用传递给类B的对象。让B类存储引用并在必要时调用A的方法。

新规范(评论)

public class classA{
    classA{
        //some code
        classB objectB = new classB(this);  //------------- pass reference here
    }
    public static void main(String[] args){
        classA objectA = new classA();
        //more code
    }
    public void methodA(){
        //even more code
    }
}

public class classB{
    private classA storedReference = null; //------------- you need a variable of classA to store the reference

    public classB(classA passedObject){   //------------- you need an appropriare constructor
        storedReference = passedObject;   //------------- store the classA object reference
    }

    public void someListener(){
        storedReference.methodA();       //------------- call methods whenever necessary
        //code needed to call methodA of the object objectA
    }
}

答案 1 :(得分:1)

您可以将对ClassA的引用传递给ClassB中的构造函数,例如

class ClassB(ClassA ref) {
    ref.someMethod();
}

但是,如果要在正在构建的类的实例上调用方法,则需要小心。该课程可能尚未完成建设,可能处于不完整状态。

答案 2 :(得分:0)

您需要将构造函数添加到classB中,以便可以将classA作为对它的引用。

所以你的classB变成了:

public class classB {
    classA cA;

    public classB(classA cA) {
        this.cA = cA;
    }

   public void someListener(){
        cA.methodA();
   }

}

你的classA构造函数:

classA{
    //some code
    classB objectB = new classB(this);
}

答案 3 :(得分:0)

ClassB中,您要调用ClassA的方法。这并不难,但我相信你的关系不正确。

  • 如果您使用的是当前代码:您需要将ClassA的实例传递给ClassB,这可以使用{ {1}}运营商:

    this

    在classB中:

    public classA() {
        //some code
        classB objectB = new classB();
        objectB.someListener(this);
    }
    
  • 如果您想要颠倒两者之间的关系:而不是public void someListener(classA theClassA) { //code needed to call methodA of the object objectA theClassA.methodA(); } classB的实例依赖classA来实现做它的工作,让classA成为主导对象,让它包含classB的实例。