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

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

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

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

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

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

2 ответа

Решение

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

Вы можете использовать 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" определяется несколько раз. (Это даже легче увидеть в иерархическом представлении.)

Другие вопросы по тегам