Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpMrCn 19 of 322 menu
◀ ▶

Создание объекта через ссылку на конструктор в Java

Конструктор тоже можно передать по ссылке. Справа от :: пишут new, слева - имя класса. Интерфейс без аргументов, например Supplier, создаёт пустой объект. Интерфейс с параметрами, например Function, передаёт их в подходящий конструктор.

Фабрика записей может отдавать новый Post по заголовку. Ссылка Post::new заменяет лямбду с new Post(...):

import java.util.function.Function; import java.util.function.Supplier; class Post { String title; Post() { this.title = "Draft"; } Post(String title) { this.title = title; } @Override public String toString() { return title; } } public class Main { public static void main(String[] args) { Supplier<Post> empty = Post::new; Function<String, Post> byTitle = Post::new; System.out.println(empty.get()); System.out.println(byTitle.apply("Weekly digest")); } }

Компилятор выбирает конструктор по типу функционального интерфейса. Для Supplier нужен конструктор без параметров, для Function<String, Post> - с одной строкой.

Класс Article имеет конструктор с одним параметром String topic. Создайте статью с темой "Events" отложенным созданием и выведите значение поля topic.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить