Я пытаюсь сделать что-то подобное нижнему псевдокоду. Это противоречит любым правилам или рекомендациям по использованию вложенных классов?Статический вложенный Cass для хранения нескольких списков в внешнем классе
public class Foo{
private list1, list2;
Bar bar = new Bar(list1, list2);
// use bar.listA, bar.listB, bar.listC,
//bar.listD, bar.listE
private static class Bar{
private list1, list2;
private listA, listB, listC, listD, listE;
private Bar(list1, list2) {
this.list1 = list1;
this.list2 = list2;
//logic to split list1 and list2 into 5 lists: listA, listB, listC, listD, listE.
//initialize the 5 lists
}
}
}
Я использую вложенный класс по причинам, упомянутых Oracle or the reasons mentioned by Oracle:
- Это способ логически группировать классы, которые используются только в одном месте
- Это увеличивает инкапсуляцию
- Это может привести к более удобному считыванию и код для обслуживания
- И причины mentioned here
И я вставляю вложенный класс static, потому что мне не нужен прямой доступ к внешним членам класса.
Редактировать: Чтобы быть более конкретным, некоторые вопросы на мой взгляд: Должен ли я использовать ENUM вместо вложенного класса? Должен ли я использовать геттеры/сеттеры для 5 списков в вложенном классе? Является ли конструктор вложенного класса правильным местом для размещения раздельной логики? Можно ли напрямую ссылаться на частные члены вложенного класса во внешнем классе? и т. д.
Трудно рассуждать о таких абстрактных проектах. Какую проблему в мире вы пытаетесь решить? – plalx
, если во внешний экземпляр передано 2 списка, мне просто нужен элегантный способ разделить их на 5 списков и иметь дескриптор для них во внешнем экземпляре (только). Это просто процесс преобразования данных. – Gadam
Если это так, то я бы реализовал функциональное решение во внешнем классе, и я бы не стал беспокоиться о вложенных классах или любой форме OO-дизайна. То есть, если вы не выполните специальные действия в этих списках. Какова логика расщепления, как они будут использоваться? Некоторые виды поведения применимы только к некоторым спискам? – plalx