你的
bindLists
方法是非常通用的,可以在编写时(正如您现在所拥有的那样)不引用您当前正在使用的列表(即不引用
PlanItem
类)。所以我可能会成功
public static <SRC, DEST> void bindLists(ObservableList<DEST> dest, ObservableList<SRC> src, ...) { ... }
注意,映射函数只需要能够应用于
src
(因此,它必须对其元素
钢筋混凝土
是一种类型),并产生可以放入
dest
列表所以使用
Function<SRC, DEST>
可能限制性太强。尝试
public static <SRC, DEST> void bindLists(ObservableList<DEST> dest, ObservableList<SRC> src,
Function<? super SRC, ? extends DEST> transformer) { ... }
现在你可以打电话了
bindLists(ObservableList<TreeItem<PlanItem>>, ObservableList<T>, PlanItem::getTreeItem)
哪里
T
是
计划项目
或任何子类
,并且应该易于使用。