2015-09-07 53 views
0

我想要在调用类中的方法被触发时访问调用类的方法。以下是我想要做的例子。正在创建类C实例的类是随机调用的。所以当listerners方法被触发调用类的接口方法应该能听的是什么tigger.Thats我想要做调用类的访问方法

Interface myinterface 
{ 
    public void interfacemethod(); 
} 

class A implements myinterface 
{ 
    C instance = new C(); 

    public void interfacemethod() 
} 

class B implements myinterface 
{  
    C instance = new C(); 
    public void interfacemethod() 
} 

Class C extends someListerner 
{ 
    public void listenercalled() 
    { 
     //here i want to call the callers interfacemethod() 
    } 
} 
+1

请回答之前的问题-ve标记和如果标记-ve请告诉我的原因 –

+0

我很好奇这个真实世界的用例。 –

+0

你只是想调用超类方法吗?如果是这样,你不能只''super.interfacemethod()'? –

回答

0

您需要将指针传递给调用者的对象。

如果您要调用C的创建者的Myinterface对象,请在C构造函数中传递Myinterface指针。

C instance = new C(this);

将指针存储在C类中并将其用于回调。 Java函数默认为“虚拟”。这意味着,无论是否投射,最低的子类函数都会被调用(我认为这就是你想要的)。

Interface Myinterface{ 
    public void interfacemethod(); 
} 

class A implements Myinterface 
{ 
    C instance = new C ((Myinterface)this); 

    public void interfacemethod() 
} 

class B implements Myinterface 
{  
    C instance = new C ((Myinterface)this); 
    public void interfacemethod() 
} 

Class C extends someListerner 
{ 
    Myinterface ml; 
    public C(Myinterface arg_ml){ 
     ml = arg_ml; 
    } 
    public void listenercalled() 
    { 
     ml.interfacemethod(); 
     //here i want to call the callers interfacemethod() 
    } 
} 
+0

可以请你举例来说,通过编写代码让我更好地理解 –

+0

Java默认使用虚函数,因此,即使将其作为My Interface,也会调用相应的A或B接口,如果我了解您。 – SirTripalot

+0

我可以尝试,我是新来的堆栈溢出,所以格式化很棘手​​。 – SirTripalot