Задать вопрос
  • Стоит ли использовать instanceof, если в JTree несколько разных объектов?

    @paralainer
    Не стоит забывать про возможность использования стратегий.

    Очень приблизительный код, но суть ясна:
    private static final Map<Class, Action> strategies = new HashMap<>();
        
        private static interface Action {
             void doAction(Params params);
        }
        
        static {
            strategies.put(ANodeType.class, new Action() {
                public void doAction(Params params){
                     ...
                } 
            });
    
            strategies.put(BNodeType.class, new Action() {
                public void doAction(Params params){
                     ...
                } 
            });
        }
        
        ...
        
        public void handleTreeNode(Object node, Params params){
           strategies.get(node.getClass()).doAction(params);
        }


    А вообще есть вариант реализовать всеми типами нод интерфейс Action (переименовав его, например, в JTreeNode) и выглядеть это будет примерно так:

    public void handleTreeNode(JTreeNode node, Params params){
           node.doAction(params);
        }


    Но тут нужно смотреть возможно ли изменить код классов, которые хранятся в дереве и насколько это будет архитектурно правильно. (Специальные ли это объекты для дерева или общие объекты системы)
    Ответ написан