我正在开发一个创建网络模拟器的项目。我模拟的网络是分层网络。我正在使用k-ary树数据结构,以及一些额外的方法来模拟和执行网络的一些分析。
到目前为止,我有一个接受泛型类型的通用k-ary树数据结构,它工作正常。问题是树节点似乎只能是一种类型。例如,如果我使用String类型声明树,那么节点必须都是String对象。
但是,由于我正在尝试建模计算机网络(或任何网络),因此某些节点可能必须是服务器对象,而某些节点可能是主机对象,甚至是路由器对象等......
我希望异构树的节点有一些服务器对象和一些mobileDevice对象......
我在Google上找不到太多的答案,而且似乎在测试我的创造力。我知道一个名为ANTL3R的抽象语法树构建器,它应该可以利用异构树,但我的树是用于网络,而不是编译器。
答案 0 :(得分:1)
解决方法是定义树的所有节点必须实现的interface
。然后,您可以声明树以存储该类型的数据。
public interface ComputerComponent {
String getName();
ComponetType getType();
...
}
Tree<ComputerComponent> network;
另一种选择(不推荐)是将其声明为Tree<Object>
。然后你可以在其中存储任何内容但是你失去了所有的类型检查功能,最终必须使用instanceof
并使用强制转换来使用你检索的数据。