Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / java 8: присвоение через ссылку на конструктор / 9 сообщений из 9, страница 1 из 1
04.06.2015, 10:59
    #38975945
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
в проекте увидел, что кто-то написал что-то подобное:

Код: java
1.
MyInterface var = MyClass::new;



это что-то типа lazy инициализации ?
...
Рейтинг: 0 / 0
04.06.2015, 11:09
    #38975961
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
Это ссылка на метод. MyInterface это просто интерфейс, а Single Method Interface. Вызов var.method() будет делигировать вызов конструктору.
Для деталей надо смотреть конкретику, твой пример слишком синтетический.
...
Рейтинг: 0 / 0
04.06.2015, 11:09
    #38975962
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
...
Рейтинг: 0 / 0
04.06.2015, 11:13
    #38975967
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
[quot Blazkowicz] MyInterface это просто интерфейс, /quot]

Видимо НЕ просто интерфейс.

Ну да, функциональный.

И на самом деле это поле класса.
...
Рейтинг: 0 / 0
04.06.2015, 11:17
    #38975973
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
questionerВидимо НЕ просто интерфейс.
Ну да, функциональный.

Угу.

questionerИ на самом деле это поле класса.
Не важно. Любая переменная. Хоть локальная, хоть поле, можно даже и параметр.
...
Рейтинг: 0 / 0
04.06.2015, 15:08
    #38976335
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
Blazkowicz,

выяснил, что это эквивалентно

Код: java
1.
MyInterface var = ()->(new MyClass())  //не уверен надо ли return писать



что в свою очередь эквивалентно

Код: java
1.
2.
3.
4.
5.
MyInterface var = new MyInterface(){
    public MyClass anyMethodName(){
        return new MyClass();
    }
}
...
Рейтинг: 0 / 0
04.06.2015, 15:16
    #38976352
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
questionerвыяснил, что это эквивалентно
Код: java
1.
MyInterface var = ()->(new MyClass())  //не уверен надо ли return писать



Похоже.

questionerчто в свою очередь эквивалентно
Код: java
1.
2.
3.
4.
5.
MyInterface var = new MyInterface(){
    public MyClass anyMethodName(){
        return new MyClass();
    }
}


Не совсем. Анонимные классы и лямбды имеют схожее поведение и использование. Но реализация на уровня байт-кода у них разная.
...
Рейтинг: 0 / 0
04.06.2015, 15:37
    #38976394
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
Blazkowiczquestionerчто в свою очередь эквивалентно
Код: java
1.
2.
3.
4.
5.
MyInterface var = new MyInterface(){
    public MyClass anyMethodName(){
        return new MyClass();
    }
}


Не совсем. Анонимные классы и лямбды имеют схожее поведение и использование. Но реализация на уровня байт-кода у них разная.

а схожая насколько? какие отличия?
...
Рейтинг: 0 / 0
04.06.2015, 16:55
    #38976526
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java 8: присвоение через ссылку на конструктор
questionerBlazkowiczпропущено...

Не совсем. Анонимные классы и лямбды имеют схожее поведение и использование. Но реализация на уровня байт-кода у них разная.

а схожая насколько? какие отличия?

Другая инструкция в байткоде. Не создаётся класс (включая файл), нет других лишних бубенчиков.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / java 8: присвоение через ссылку на конструктор / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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