2016-03-15 162 views
0

我想知道我是否可以通过避免在我的类的声明中的第二个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>

public abstract class TreeElementAction<T extends TreeNode<?>> {