Рефакторинг сумасшедших иерархий наследования объектов-значений - Как получить список всех полей и типов? - PullRequest
4 голосов
/ 03 декабря 2010

Так что, в принципе, мне нужно вручную настроить иерархию наследования. Я хотел бы, чтобы классы были идеальными, без дополнительных полей, и они просто DTO. Тем не менее, очень легко потеряться и добавить дубликаты полей, и очень трудно понять, есть ли то, что я ищу, уже там. Я бы очень хотел иметь возможность перечислить все поля внутри класса, включая его унаследованные поля (тоже приватные). Как уплощенный вид только для полей без геттеров и сеттеров, загромождающих все.

Я нашел способ показать это в NetBeans с помощью щелчка правой кнопкой мыши на элементе File, но я не могу скопировать-вставить и сохранить его в текстовом файле или в любом другом месте.

В основном только эти столбцы:

Name     Type            Superclass
id       int  
theDate  java.util.Date  com.something.AbstractDTO
...

Кто-нибудь знает, как это сделать, или лучший способ сделать то, что я пытаюсь сделать?

Ответы [ 2 ]

1 голос
/ 04 декабря 2010

Вы можете использовать Eclipse «Hierarchy View».Когда вы нажимаете на класс, вы получаете его членов.Нажав значок «Показать все унаследованные элементы», вы получите представление, отсортированное по типу элемента (статические поля, статические методы, поля экземпляров и т. Д.).Вы можете выбрать поля экземпляра обычным способом, щелкнуть правой кнопкой мыши и «скопировать полное имя».Вы получите что-то вроде этого, которое включает в себя, где элемент был первоначально определен.

nz.ac.vuw.ecs.kcassell.cluster.MatrixBasedAgglomerativeClusterer.distanceMatrix
nz.ac.vuw.ecs.kcassell.cluster.MatrixBasedAgglomerativeClusterer.originalMatrix
nz.ac.vuw.ecs.kcassell.cluster.DisjointClusterer.originalMatrix
nz.ac.vuw.ecs.kcassell.cluster.DisjointClusterer.originalSeed1
nz.ac.vuw.ecs.kcassell.cluster.DisjointClusterer.originalSeed2
nz.ac.vuw.ecs.kcassell.cluster.MatrixBasedAgglomerativeClusterer.previousIteration
...

В этом примере «originalMatrix» определяется множественно(Это даже легче увидеть в иерархическом представлении.)

1 голос
/ 03 декабря 2010

Если не существует ранее существующего инструмента, нетрудно написать что-то, что использует отражение для извлечения этой информации из ваших классов DTO.Вам нужно будет перекомпилировать и перезапустить программу для обновлений, но это лучше, чем ничего.

...