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


OnClickListener$1 и OnClickListener$2 - имена синтетических классов.
...
Рейтинг: 0 / 0
24.10.2013, 14:41:20
    #38439947
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейс как объект. Его можно создавать
Я к тому что их можно попробовать инстанциировать отдельно.
...
Рейтинг: 0 / 0
24.10.2013, 17:55:06
    #38440332
Beduin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейс как объект. Его можно создавать
Это видимо обычная ссылка получается на настоящий класс, с помощью интерфейса. В jave вроде как указателей нет.
...
Рейтинг: 0 / 0
24.10.2013, 18:57:55
    #38440401
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейс как объект. Его можно создавать
Да. Анонимный он лишь с точки зрения стандартов языка. А для класслоадера он ниразу ни анонимный.
...
Рейтинг: 0 / 0
24.10.2013, 19:14:45
    #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
24.10.2013, 20:15:28
    #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
24.10.2013, 20:43:02
    #38440487
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейс как объект. Его можно создавать
maytonХм...
Я не понял вопроса)
...
Рейтинг: 0 / 0
24.10.2013, 20:49:57
    #38440493
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейс как объект. Его можно создавать
А я ничего и не спрашиваю. Просто рассуждаю.

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


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