再作成する条件 (私が知る限り):
- ネストされた列挙型は、親の静的メンバーを参照します
- ネストされたクラス
- 親クラスの静的メンバーは、ネストされたクラスへのコンストラクター引数として enum を取ります
- 列挙型は、親クラスの他の何よりも前に外部クラスによって参照されます
このコードをオンラインで実行します: https://repl.it/repls/PlushWorthlessNetworking
import java.util.ArrayList;
class Recreate {
private static ArrayList FEATURES = new ArrayList();
public enum Car {
TESLA(FEATURES);
Car(ArrayList l) { }
}
public static class Garage {
final Car car;
Garage(Car car) {
this.car = car;
}
}
public static Garage ONE_CAR_GARAGE = new Garage(Car.TESLA);
}
class Main {
public static void main(String[] args) {
// inclusion of this line causes the next line to NPE
System.out.println(Recreate.Car.TESLA);
System.out.println(Recreate.ONE_CAR_GARAGE.car.toString());
}
}