2017-08-03 191 views
-5

所以,如果我有来自其它类的对象类:Java调用从对象的方法

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 
    } 

} 

对象如何调用该方法TestMethod的?

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

+1

这只是'object.callMethod()'...不太清楚为什么这会让你感到困惑,因为你正在谈论你是如何在线程中工作的 –

+2

如果'ObjectClass'需要调用'Test'上的方法,那么它需要一个对'Test'实例的引用。可能传递给'callMethod'方法或'ObjectClass'构造函数。 – David

+0

David提供了一种方法来做你想做的事。现在我建议你问自己为什么需要这样做。 – msfoster

回答

1

你要通过子对象的父母自己的实例:

public class Test { 
    private ObjectClass object; 

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

    public void testMethod(){ 
     //does something 
    } 
} 

对象类:

public class ObjectClass { 
    Test parentInstance; 

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

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

然后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);