4

再作成する条件 (私が知る限り):

  1. ネストされた列挙型は、親の静的メンバーを参照します
  2. ネストされたクラス
  3. 親クラスの静的メンバーは、ネストされたクラスへのコンストラクター引数として enum を取ります
  4. 列挙型は、親クラスの他の何よりも前に外部クラスによって参照されます

このコードをオンラインで実行します: 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());
  }
}
4

2 に答える 2