У меня много объектов типа ContainedClass
, хранящихся в объекте типа ContainingClass
. Мне нужно получить доступ к объекту контейнера изнутри объектов. На данный момент я делаю это, передавая ссылку на контейнерный объект в конструктор других объектов, таких как ContainedClass cclass = new ContainedClass(this);
, и сохраняя его как ContainingClass owner
.
Это кажется мне уродливым, и решение, которое мне кажется подходящим, заключается в использовании внутренних классов, но определение для ContainedClass очень большое, и это кажется неуместным. Итак, с какими из вариантов я должен пойти? Или есть еще один очевидный вариант, который мне не хватает?
Вот пример кода, который я нашел в Интернете и показывающий, для чего я буду использовать внутренние классы.
public class TestIt {
public static void main(String a[]){
new TestIt().doit();
/*
output :
Hello world!
*/
}
public void doit() {
new InnerClass().sayHello();
}
public void enclosingClassMethod(){
System.out.println("Hello world!");
}
class InnerClass {
public void sayHello() {
TestIt.this.enclosingClassMethod();
}
}
}
Я должен добавить, что другим преимуществом внутренних классов, на которые я смотрел, было то, что ContainedClass
мог существовать только в ContainerClass
, что является желаемым результатом.