У меня есть родовое дерево, общий параметр тип данных хранятся в узлах:Реализации универсального интерфейса с сырым типом
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;
}
Но я не знаю, как реализовать этот последний случай, приведенный выше код не компилировать как я должен реализовать общий интерфейс не сырой один. Я пробовал внедрить
Visitor<?>
с таким же результатом. Поэтому мой вопрос заключается в том, что я вынужден использовать общий тип
NodeCounter<D>
для реализации интерфейса посетителя ?.
Спасибо.
Что C# Конвенция должна умереть в огне. –