powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Интерфейс как объект. Его можно создавать
16 сообщений из 16, страница 1 из 1
Интерфейс как объект. Его можно создавать
    #38439540
Фотография Beduin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OnClickListener oclBtnOk = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
};
Где
public static interface
View.OnClickListener
Вроде интерфейсы нельзя создавать как объекты или я что-то путаю?
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38439553
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это анонимный класс. Он реализует все методы интерфейса.
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38439709
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, если включить трассу класслоадера
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38439713
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИнтересно, если включить трассу класслоадера
То что?
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38439747
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Провёл эксперимент. Эти анонимные экземпляры получают имена числовой последовательности.
Код: java
1.
2.
[Loaded OnClickListener$1 from file:/.....]
[Loaded OnClickListener$2 from file:/.....]
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38439750
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Экземпляры классов.
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38439757
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonПровёл эксперимент. Эти анонимные экземпляры получают имена числовой последовательности.
Код: java
1.
2.
[Loaded OnClickListener$1 from file:/.....]
[Loaded OnClickListener$2 from file:/.....]


OnClickListener$1 и OnClickListener$2 - имена синтетических классов.
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38439947
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я к тому что их можно попробовать инстанциировать отдельно.
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38440332
Фотография Beduin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это видимо обычная ссылка получается на настоящий класс, с помощью интерфейса. В jave вроде как указателей нет.
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38440401
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Анонимный он лишь с точки зрения стандартов языка. А для класслоадера он ниразу ни анонимный.
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38440419
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЯ к тому что их можно попробовать инстанциировать отдельно.
Можно инстанцировать отдельно. Правда если capture'тся с outer классом - нужен instance outer класса (ну или null подсунуть, что в большинстве случаев есть плохая идея).

maytonДа. Анонимный он лишь с точки зрения стандартов языка. А для класслоадера он ниразу ни анонимный.
Спорно.
http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isAnonymousClass()
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38440460
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм....(1)

The Java® Virtual
Machine Specification
Java SE 7 EditionThe Synthetic attribute was introduced in JDK release 1.1 to support nested classes and
interfaces.

Хм..(2)

env.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
    static class MyClickListener implements OnClickListener {
        public void onClick(View v) {
        }
    }


    public static void main(String[] args) {


        OnClickListener oclBtnOk1 = new OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        };

        OnClickListener oclBtnOk2 = new OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        };


        OnClickListener oclBtnOk3 = new MyClickListener();


    }



env.jasm
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    Code:
      stack=2, locals=4, args_size=1
         0: new           #2                  // class env$1
         3: dup           
         4: invokespecial #3                  // Method env$1."<init>":()V
         7: astore_1      
         8: new           #4                  // class env$2
        11: dup           
        12: invokespecial #5                  // Method env$2."<init>":()V
        15: astore_2      
        16: new           #6                  // class env$MyClickListener
        19: dup           
        20: invokespecial #7                  // Method env$MyClickListener."<init>":()V
        23: astore_3      
        24: return        
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38440487
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonХм...
Я не понял вопроса)
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38440493
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я ничего и не спрашиваю. Просто рассуждаю.

Кстати, подумай, можно-ли глядя на opcodes процедуры main различать
где был анонимный класс а где nested.
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38440699
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonКстати, подумай, можно-ли глядя на opcodes процедуры main различать
где был анонимный класс а где nested.
У nested class'а есть своё имя, которое по правилам языка не может начинаться с цифр..
...
Рейтинг: 0 / 0
Интерфейс как объект. Его можно создавать
    #38440772
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимные классы, как и inner классы, тоже относятся к nested классам.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Интерфейс как объект. Его можно создавать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]