Я работаю над проектом создания сетевого симулятора. Сети, которые я имитирую, являются иерархическими сетями. Я использую структуру данных k-ary tree, а также некоторые дополнительные методы для имитации и анализа некоторых сетей.Простое гетерогенное k-арное дерево в java (для создания сетевого симулятора)
До сих пор у меня есть общая структура данных дерева k-ary, которая принимает общие типы, она отлично работает. Проблема в том, что узлы дерева могут быть только одного типа. Например, если я объявляю дерево с типом String, все узлы должны быть объектами String.
Однако, поскольку я пытаюсь смоделировать компьютерную сеть (или любую другую сеть), некоторые узлы могут иметь быть серверными объектами и некоторые узлы могут быть объектами хоста, или даже маршрутизатор объекта и т.д ...
I хочу, чтобы мои узлы гетерогенного дерева имели некоторые серверные объекты и некоторые объекты mobileDevice ...
Я не нахожу слишком много ответов на это в Google, и это, кажется, проверяет мое творчество. Я знаю абстрактного конструктора дерева синтаксиса под названием ANTL3R или чего-то еще, он якобы может использовать гетерогенные деревья, но мое дерево предназначено для сетей, а не для компиляторов.
Итак, мой класс node будет интерфейсом с переменными String getName() componentType getType() ... Я предполагаю, что когда я фактически добавляюNode() в дерево, я могу добавить узел «Сервер реализует ComputerComponent», и всякий раз, когда я использую toString() на узле, я получу имя объекта обратно? –
Ваш ответ по существу правильный, его же метод использует компиляторы для построения абстрактного синтаксического дерева. Однако я решил пойти по пути дешевле. То, что я делаю, это сделать каждый узел объектом String, и я использую метод charAt() для чтения первого символа, если он равен 1, это сервер, если он является 2, это хозяин .... charAt() во втором месте может быть задержка, и у меня есть дешевая схема для этого –