2014-01-27 4 views
0

Что я хотел бы сделать, это создать экземпляр анонимного класса и быть в состоянии передать его как этот псевдо например:Может ссылаться на экземпляр анонимного класса?

String s=new String { 
        //make a subclass, 
        //override method 
} 

Возможно ли это?

+3

Компилятор будет стрелять в вас, если вы это сделаете. – Maroun

+0

Если вам нужно обратиться к классу, не делайте это * anonymous * :) – Durandal

ответ

0

я понял, что ОП хотел сделать что-то подобное, но выбрала плохой класс (String) в своем примере:

WindowListener w = new WindowAdapter() { 
    public void windowClosing() { 
    } 
} 

Теперь вы можете обратиться к анонимному классу (который расширяет WindowAdapter) , через ссылки WindowListener. Утверждение, что анонимные классы нельзя «ссылаться», неверно. Вы можете обратиться к вышеуказанному экземпляру с помощью w и к классу с w.getClass().

+0

Да, я забыл, что String является окончательным. Пока не профессионал. – Alexiy

4

В частности, вы не можете сделать подкласс класса String, так как это final.

А также анонимные классы не может быть.

Они похожи на местные классы, за исключением того, что у них нет имени. Используйте , если вам нужно использовать локальный класс только один раз.

+2

+1. Как видно из [docs] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html) - 'public final class String extends Object'. – Maroun

+0

Я не понимаю, что «анонимные классы нельзя назвать». Вы имеете в виду, что вы не можете ссылаться на анонимные классы? – Kayaman

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