猿问

Java中接口返回List<自身类型>时, 实现类如何实现?

场景:

这个是接口

public interface TreeNode<T> {    public List<T> levelOrder();    
    public List<TreeNode<T>> getChildNodes();    
    public T getVal();    
    public void setVal(T val);
}

这个是实现类

public class BinaryTreeNode<T> implements TreeNode<T> {
    @Override
    public List<BinaryTreeNode<T>> getChildNodes(){        return null;
    }
}

这里会报错,

如果把返回类型改成TreeNode<T>[], 则实现方法那里可以为BinaryTreeNode<T>[].

提问:

如果我想要接口返回List/Map等集合类, 而不是数组, 应该怎么做?


偶然的你
浏览 532回答 2
2回答

一只萌萌小番薯

public&nbsp;List<?&nbsp;extends&nbsp;TreeNode<T>>&nbsp;getChildNodes();

森林海

以下仅供参考。public&nbsp;interface&nbsp;TreeNode<T,&nbsp;S&nbsp;extends&nbsp;TreeNode<T,&nbsp;S>>&nbsp;{&nbsp;&nbsp;//&nbsp;... &nbsp;&nbsp;List<S>&nbsp;getChildNodes();&nbsp;&nbsp;//&nbsp;...}public&nbsp;class&nbsp;BinaryTreeNode<T>&nbsp;implements&nbsp;TreeNode<T,&nbsp;BinaryTreeNode<T>>&nbsp;{&nbsp;&nbsp;//&nbsp;... &nbsp;&nbsp;@Override &nbsp;&nbsp;public&nbsp;List<BinaryTreeNode<T>>&nbsp;getChildNodes()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;... &nbsp;&nbsp;}&nbsp;&nbsp;//&nbsp;...}
随时随地看视频慕课网APP

相关分类

Java
我要回答