powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / java 8: присвоение через ссылку на конструктор
9 сообщений из 9, страница 1 из 1
java 8: присвоение через ссылку на конструктор
    #38975945
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в проекте увидел, что кто-то написал что-то подобное:

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



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

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

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

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

Угу.

questionerИ на самом деле это поле класса.
Не важно. Любая переменная. Хоть локальная, хоть поле, можно даже и параметр.
...
Рейтинг: 0 / 0
java 8: присвоение через ссылку на конструктор
    #38976335
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
java 8: присвоение через ссылку на конструктор
    #38976352
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
java 8: присвоение через ссылку на конструктор
    #38976394
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczquestionerчто в свою очередь эквивалентно
Код: java
1.
2.
3.
4.
5.
MyInterface var = new MyInterface(){
    public MyClass anyMethodName(){
        return new MyClass();
    }
}


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

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

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

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

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


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