我正在研究Java泛型,我想知道在这两个代码中使用通配符<?>
会有什么不同:
第一
public class Tree<T> {
private final T node;
private final Set<Tree<?>> children;
public Tree(T node, Set<Tree<?>> children) {
this.node = node;
this.children = children;
}
public static void main(String[] args) {
Set<Tree<?>> children = new HashSet<>();
children.add(new Tree<Integer>(new Integer(0), new HashSet<>()));
children.add(new Tree<String>("asdf", new HashSet<>()));
Tree<Integer> ti = new Tree<Integer>(new Integer(1), children);
}
}
第二
public class Tree<T> {
private final T node;
private final Set<Tree> children;
public Tree(T node, Set<Tree> children) {
this.node = node;
this.children = children;
}
public static void main(String[] args) {
Set<Tree> children = new HashSet<>();
children.add(new Tree<Integer>(new Integer(0), new HashSet<>()));
children.add(new Tree<String>("asdf", new HashSet<>()));
Tree<Integer> ti = new Tree<Integer>(new Integer(1), children);
}
}
我写了一个使用该类的简单main
,但我对这个类的不同用法产生的差异感兴趣(我没有看到这个main
有任何不同。)< / p>
编辑:不知道是否从示例中清楚,但我不一定想要相同类型的树的节点。