MyClass::new
будет работать только в этом контексте, если ваш класс имеет конструктор, который принимает один параметр, тип которого является типом элементов Stream
. Конструктор без параметров не будет работать.
myClassList.stream().map(MyClass::new)...
ведет себя как
myClassList.stream().map(e -> new MyClass(e))...
Поскольку myClassList
представляет собой список MyClass
экземпляров, это означает, что для работы ссылки на метод потребуется конструктор следующей подписи - MyClass (MyClass other)
.
Вы все еще можете использовать конструктор без параметров со следующим лямбда-выражением:
myClassList.stream().map(e -> new MyClass())...
Конечно, это не имеет большого смысла, так как игнорирует исходные элементы Stream
.
Поскольку ваша цель - клонировать List
, вам нужен конструктор копирования:
public MyClass (MyClass other) {
// copy the properties of other to this instance
}