gpt4 book ai didi

java - 使用原始类型实现通用接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:18:25 24 4
gpt4 key购买 nike

我有一个泛型树,泛型参数是节点存储的数据类型:

class TreeNode<D>{  
public D data;
.....
}

然后是一个访问者界面,与树横向一起使用:

interface Visitor<D> {
void visit(TreeNode<D> node);
}

一些访问者可以利用泛型:

class DataListCreator<D> implements Visitor<D> {
List<D> dataList = new ArrayList<D>();
public void visit(TreeNode<D> node) {
dataList.add(node.data);
}
public List<D> getDataList() {
return dataList;
}

但其他人则不然,他们更适合原始类

class NodeCounter implements Visitor {
private int nodeCount = 0;
public void visit(TreeNode node) {
nodeCount++;
}
public int count() {
return nodeCount;
}

但我不知道如何实现最后一个案例,上面的代码无法编译,因为我必须实现通用接口(interface)不是原始接口(interface)。我尝试实现

Visitor<?> 

同样的结果。所以我的问题是,我被迫使用泛型

NodeCounter<D> 

实现访客界面?

谢谢。

最佳答案

the code above don't compile

我尝试编译您的示例,它工作正常。我使用的是 Java 6。您遇到的编译错误是什么?

这是我编译成功的:

class TreeNode<D>{  
public D data;
}

interface Visitor<D> {
void visit(TreeNode<D> node);
}

class NodeCounter implements Visitor {
private int nodeCount = 0;
public void visit(TreeNode node) {
nodeCount++;
}
public int count() {
return nodeCount;
}
}

关于java - 使用原始类型实现通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com