2009-11-05 2 views
4
this.addTreeSelectionListener(new TreeSelectionListener() { 

     public void valueChanged(TreeSelectionEvent e) { 

      // How do I access the parent tree from here?   
     }   
    }); 
+3

Что вы подразумеваете под родительским деревом? –

+0

Ах, извините, мой плохой. Новое в java и не понимало, что TreeSelection был интерфейсом. – Goutham

ответ

3

TreeSelectionListener - это интерфейс, поэтому единственным родительским классом будет Object, с которым вы сможете позвонить с помощью super.

Если вы имели в виду вызов какого-либо метода охватывающего класса, вы можете вызвать его непосредственно как внутри метода.

+0

Кажется, что я был тем, кто отказался от ответа, потому что я не получил достаточно информации для опубликованного вопроса. «Как мне получить доступ к родительскому объекту анонимного объекта в Java?». Я не понял, почему я могу использовать супер в анонимном классе ... Я думал, что вы не можете, потому что любой вызов 'super' или' this' будет соответствовать внешнему классу, а не родительскому анонимному ... Хм ... Извините ... Я до сих пор не знаю правильного ответа, но кажется, что я был в спешке ... Лучше было бы найти правильный правильный ответ, а затем принять решение ... – yashaka

37

Вы можете использовать OuterClass.this:

public class Test { 

    String name; // Would normally be private of course! 

    public static void main(String[] args) throws Exception { 
     Test t = new Test(); 
     t.name = "Jon"; 
     t.foo(); 
    } 

    public void foo() { 
     Runnable r = new Runnable() { 
      public void run() { 
       Test t = Test.this; 
       System.out.println(t.name); 
      } 
     }; 
     r.run(); 
    } 
} 

Однако, если вам просто нужно получить доступ к элемент в ограждающих инстанции, а не получить ссылку на сам, например, вы можете просто получить доступ к нему напрямую:

Runnable r = new Runnable() { 
    public void run() { 
     System.out.println(name); // Access Test.this.name 
    } 
}; 
+1

@ Крис: Каким образом это не отвечает на вопрос? Он абсолютно показывает, как попасть в прилагаемый экземпляр. По крайней мере, он отвечает на вопрос, который, как мне кажется, был спрошен. Это далеко не однозначный вопрос (термин «родительский объект» не определен), но я предположил, что OP означает «охватывающий экземпляр», и в этом случае он отвечает на вопрос. –

+0

Хотя сама Java не определяет «родительский», это общий термин для суперклассов в объектно-ориентированных языках программирования. Веб-поиск «родительский элемент Java» или «Объектно-ориентированный родитель» покажет миллионы обращений. Для быстрого ознакомления с википедией для «диаграммы классов» она гласит: «Суперкласс (базовый класс) в отношении обобщения также известен как« родительский », суперкласс, базовый класс или базовый тип». –

+0

@ Крис: Да, но это игнорирует контекст анонимного типа, из класса ... и комментарий в методе, который говорит о * дереве *, явно отличном от * слушателя *. Я придерживаюсь своего толкования двусмысленного вопроса как правильной интерпретации. –

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