Ниже приведен некоторый игрушечный код, демонстрирующий мой вопрос. Первая - это версия, которая компилируется, а вторая - это версия, которая не компилируется.
В примере 1 , чтобы создать экземпляр InnerClass, я должен создать экземпляр ниже определения класса InnerClass. Это имеет смысл, потому что выше определения класса InnerClass не виден. Однако, скажем ради аккуратности, я хочу создать и использовать экземпляр InnerClass в верхней части foo (). Есть ли способ определить InnerClass на лету до фактического определения класса, чтобы мой код выглядел больше как пример 2 , но был бы допустимым Java?
пример 1
public class OuterClass {
public void foo() {
class InnerClass {
public InnerClass() {
// do nothing.
}
}
InnerClass in = new InnerClass(); // Defined below, and compiles!
}
}
пример 2
public class OuterClass {
public void foo() {
InnerClass in = new InnerClass(); // Defined above, does not compile!
class InnerClass {
public InnerClass() {
// do nothing.
}
}
}
}