2015-09-07 2 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 пожалуйста скажите THHE причины также –

+0

мне очень интересно об этом реальном мире случае использования. –

+0

Вы просто хотите вызвать метод суперкласса? Если это так, вы не можете просто 'super.interfacemethod()'? –

ответ

0

Вам нужно передать указатель на объект вызывающего абонента.

Если вы пытаетесь вызвать объект Myinterface создателя C, передайте указатель Myinterface в конструкторе C.

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 использует виртуальные функции по умолчанию, поэтому даже при передаче как Myinterface будет вызываться соответствующий интерфейс A или B, который вы ищете, если я понимаю вас , – SirTripalot

+0

Я могу попробовать, я новичок в переполнении стека, поэтому форматирование сложнее. – SirTripalot

Смежные вопросы