我有一个PlanItemEditor类。

我需要E项目的副本构造函数。如何使用方法参考传递它?

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

我当时正在考虑将一元函数作为参数,并从E类传入一个方法,该方法正是一个复制构造函数,但具有不同的名称签名。但是,这有点hacky。

有更好的方法吗?

最佳答案

您可以使用:

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);

10-05 22:02