Описание тега constructor-reference

Начиная с Java 8, ссылка на конструктор - это особый тип ссылки на метод. Используйте этот тег для вопроса, относящегося к ссылке на конструктор, а не для общей ссылки на метод.
1 ответ

Автоматическое сопоставление конструктора в методе по умолчанию

У меня есть PersonFactory Интерфейс следующим образом: @FunctionalInterface public interface PersonFactory<P extends Person> { P create(String firstname, String lastname); // Return a person with no args default P create() { // Is there a way …
4 ответа

Runnable:: новый против нового Runnable()

Почему не работает первый из следующих примеров? run(R::new); метод R.run не называется. run(new R()); метод R.run называется. Оба примера скомпилированы. public class ConstructorRefVsNew { public static void main(String[] args) { new ConstructorRef…
07 янв '19 в 10:15
1 ответ

Ссылка на конструктор для внутреннего класса завершается с VerifyError во время выполнения

Я создаю поставщика для конструктора внутреннего класса, используя лямбду ctx -> new SpectatorSwitcher(ctx), IntelliJ предложил мне изменить его на SpectatorSwitcher::new вместо. SpectatorSwitcher является нестатическим внутренним классом класса,…
3 ответа

Может ли Java 8 реализовать интерфейс на лету для ссылки на метод?

Я изучаю новые возможности Java 8. Я играю на разных примерах и обнаружил странное поведение: public static void main(String[] args) { method(Test::new); } static class Test{ } private static void method(Supplier<Test> testSupplier){ Test test…
1 ответ

Как передать параметр типа в ссылку на конструктор универсального класса?

Предположим, следующий код: class ConstructMe<T> {} data class Test<T> constructor(var supplier: () -> ConstructMe<T>) {} fun main(args: Array<String>) { works<Int>() breaks<Int>() } fun <T> works() { Tes…
1 ответ

Ссылки на методы конструктора Java 8

Я читаю Java 8 book это идет с образцом, который я воспроизводлю.. @FunctionalInterface public interface Action{public void perform();} Исполнитель public final class ActionImpl implements Action { public ActionImpl() { System.out.println("construct…
1 ответ

Есть ли ссылки на конструктор в Kotlin?

В Java у нас есть Class::new синтаксис для ссылок конструктора. Я знаю, что есть вызываемые ссылки на методы, но как насчет конструкторов? Типичным вариантом использования для меня будут фабрики.
20 окт '14 в 18:51
1 ответ

Как использовать [TypeArguments] со ссылкой на конструктор в Java 8?

Раздел 15.13 Спецификации языка Java для Java 8 описывает эту форму синтаксиса ссылки на метод для создания ссылки на конструктор: ClassType :: [TypeArguments] new Например: String s = "abc"; UnaryOperator<String> test0 = String::new; // Strin…
1 ответ

Как создать объект универсального типа в классе

У меня есть следующий класс open abstract class NexusAdapter<TData: NexusIdProvider, TViewHolder: NexusViewHolder<TData>> (protected val ctx: Context, private val _layoutId: Int, protected val items: List<TData>): BaseAdapter() { o…
07 май '18 в 06:51
2 ответа

Неверная ссылка на конструктор при использовании локального класса?

Учитывая следующий код: package com.gmail.oksandum.test; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { } public void foo() { class LocalFoo { LocalFoo(String in) { //Some logic } } Li…
2 ответа

Какова цель ссылок на конструкторы в Котлине

Я читаю книгу Kotlin в действии и спрашиваю себя, какова цель "создания экземпляра класса с использованием ссылки на конструктор" (стр. 112, если кому-то интересно и книга есть дома). Вот пример кода из книги: data class Person(val name: String, val…
1 ответ

Как сослаться на параметризованный конструктор в Котлине?

Итак, у меня есть такое определение: sealed interface ParseResult<out R> { data class Success<R>(val value: R) : ParseResult<R> data class Failure(val original: String, val error: Throwable) : ParseResult<Nothing> } Я хочу об…
18 янв '22 в 19:52
1 ответ

Почему не выводит "собака ест"

такой код public class LambdaTest { public static void main(String[] args) { final Animal animal = Dog::new; animal.eat(); } } @FunctionalInterface interface Animal { void eat(); } class Dog implements Animal { public Dog() { System.out.println("dog…
16 фев '23 в 09:30