Ниже приведен код игрушек, который демонстрирует мой вопрос. Первая - это версия, которая компилируется, а вторая - это версия, которая не компилируется.Java: Создание экземпляра локальных внутренних классов
В примере примера 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.
}
}
}
}
Какой компилятор вы используете? – Oded
java version "1.5.0_26" Java (TM) 2 Runtime Environment, Standard Edition – Charlotte
В чем проблема с определением класса перед его использованием? Я не вижу, какое преимущество у вас есть со вторым примером, даже если он сработает. –