我想知道我是否可以通过避免课堂宣言中的第二个V来提高课程水平。不知何故,它看起来很糟糕。
public abstract class TreeElementAction<T extends TreeNode<V>, V> {
protected abstract boolean actFor(@Nullable T element);
public void forEachElementInTree(@Nonnull T rootNode) {
requireNonNull(rootNode);
actFor(rootNode);
Collection<T> children = (Collection<T>) rootNode.getChildren();
for (T treeNode : children) {
forEachElementInTree(treeNode);
}
}
}
答案 0 :(得分:1)
除非您在此类的任何具体实现中需要V
,否则您可以删除类型变量,如@PeterLawrey建议的那样,并将其替换为TreeNode<V>
中的无界通配符:< / p>
public abstract class TreeElementAction<T extends TreeNode<?>> {