如何将复制构造函数作为方法引用传递?

时间:2014-08-26 07:23:32

标签: java lambda java-8 copy-constructor method-reference

我有一个PlanItemEditor类。

我需要E项的复制构造函数。如何使用方法引用传递它?

public void initValues(ObservableList<E> srcList, E toEdit) {
    indexToSet = srcList.indexOf(toEdit);
    editing = new E(toEdit);
    this.srcList = srcList;
}

我在考虑将一元函数作为参数包含在内,并从E类中传入一个完全是复制构造函数但具有不同名称签名的方法。然而,这有点像黑客。

有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

您可以使用:

public void initValues(ObservableList<E> srcList, E toEdit, UnaryOperator<E> copy) {
    indexToSet = srcList.indexOf(toEdit);
    editing = copy.apply(toEdit);
    this.srcList = srcList;
}

你可以用:

来调用它
initValues(srcList, toEdit, YourClass::new);