Относительно:
public class OuterClass {
OuterClass() {
// ...some initialization code...
}
void doSomething() {
OuterClass.InnerClass ic = this.new InnerClass();
}
class InnerClass {
}
Вам не нужен ни явный идентификатор OuterClass, ни this, как они подразумеваются.
Так что это не нужно:
OuterClass.InnerClass ic = this.new InnerClass();
И это нормально внутри метода экземпляра:
* * 1010
Вещи становятся более ясными, если вы создаете объект InnerClass в статическом методе, таком как main, который содержится внутри OuterClass. Там вам нужно быть более явным:
Это не сработает
public class OuterClass {
public static void main(String[] args) {
InnerClass otherInnerVar = new InnerClass(); // won't work
}
Но это будет хорошо работать:
public class OuterClass {
public static void main(String[] args) {
InnerClass otherInnerVar2 = new OuterClass().new InnerClass(); // will work
}