[java] Создание объекта inner-класса снаружи

psihodog

Есть такой код:

class Outer {
class Inner{}
}
public class Out {
public static void main(String[] arg) {
Outer o= new Outer;
?
}
}

что нужно написать на месте ? чтобы создать экземпляр класса Inner, привязанного к o?
есть такое, не очень красивое, и главное, развратное решение:

class Outer {
class Inner{}
}
class ChildOfInner extends Outer.Inner {
ChildOfInner(Outer o){o.super;}
}
public class Out {
public static void main(String[] arg) {
Outer o= new Outer;
Outer.Inner i= new ChildOfInner(o);
}
}

Хочется нормальную альтернативу.

bobby

ну а

class Outer {
class Inner{}
Inner newInner {
return new Inner;
}
}
public class Out {
public static void main(String[] arg) {
Outer o= new Outer;
Outer.Inner i = o.newInner;
}
}
не пойдет?

psihodog

Не, подразумевается, что
class Outer {
class Inner{}
}

-- не мой код, т.е. я его менять не особо могу.

bobby

ггг.
Сейчас я написал вот это, оно компилируется и выводит 5

class Outer {
int t;
Outer(int t) {
this.t = t;
}
class Inner {
void do {
System.out.println(t);
}
}
}
public class Out {
public static void main(String[] arg) {
Outer o = new Outer(5);
Outer.Inner i = o.new Inner;
i.do;
}
}

psihodog

Всё-таки жава -- это сила!
Спасибо!
Оставить комментарий
Имя или ник:
Комментарий: