Java从对象调用方法

Java从对象调用方法,java,Java,所以如果我有一个类,它有一个来自另一个类的对象: public class Test { private ObjectClass object; public Test (){ object = new ObjectClass(); } public void testMethod(){ //does something } } 对象类: public class ObjectClass { public

所以如果我有一个类,它有一个来自另一个类的对象:

public class Test {

    private ObjectClass object;

    public Test (){
        object = new ObjectClass();
    }

    public void testMethod(){
        //does something
    }
}
对象类:

public class ObjectClass {

    public void callMethod(){
        //call method from class Test
    }

}
public class ObjectClass {
    Test parentInstance;

    public ObjectClass(Test instance){
        parentInstance = instance;
    }

    public void callMethod(){
        parentInstance.testMethod();
    }
}
对象如何调用方法testMethod


我知道使用Runnable可以实现类似的功能,但我还需要一些参数,因此它不是一个选项。

您必须将子对象传递给父对象自己的实例:

public class Test {
    private ObjectClass object;

    public Test (){
        object = new ObjectClass(this);
    }

    public void testMethod(){
        //does something
    }
}
对象类:

public class ObjectClass {

    public void callMethod(){
        //call method from class Test
    }

}
public class ObjectClass {
    Test parentInstance;

    public ObjectClass(Test instance){
        parentInstance = instance;
    }

    public void callMethod(){
        parentInstance.testMethod();
    }
}

然后,
ObjectClass
需要一个对
Test
实例的引用。既然
Test
没有调用
callMethod()
,那么我假设还有其他东西在调用?除非有其他东西可以为方法本身提供该实例,
ObjectClass
将需要保留一个实例

一种方法是在构造函数上传递一个实例。例如:

public class ObjectClass {

    private final Test test;

    public ObjectClass(Test test) {
        this.test = test;
    }

    public void callMethod() {
        this.test.testMethod();
    }

}
Test
中,当创建
ObjectClass
的实例时,您需要为其提供所需的引用:

object = new ObjectClass(this);

它只是
object.callMethod()
。。。不太清楚为什么这会让您感到困惑,因为您正在谈论如何使用线程。如果
ObjectClass
需要在
Test
上调用一个方法,那么它需要引用
Test
的一个实例。很可能传递给
callMethod
方法或
ObjectClass
构造函数。David提供了一种实现您所需的方法。现在我建议你问问自己为什么需要这样做。依赖注入框架呢?您可以通过这种方式将即时测试注入ObjectClass。。。尽管我承认这可能有点过分:)