繁体   English   中英

通用类型作为通用类型参数

[英]Generic Type as generic type parameter

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

除非在此类的任何具体实现中都需要V ,否则都可以按照@PeterLawrey的建议删除类型变量,并在TreeNode<V>中将其替换为无界通配符:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM