1

定数の「ストレージユニット」として機能するいくつかのミニクラスを含むクラスがあります。問題は、これらの定数に値を割り当てるための情報が必要であり、その情報をコンストラクターでしか取得できないことです。残念ながら、ミニクラスはコンストラクターで宣言されていません。NetBeans は、宣言されているだけで初期化されていない場合でも、最終的な変数に代入できないと教えてくれます。これについてどうすればよいですか?

編集:この問題が発生するコードの例:

public class Car {
    class constants {
        public final String MAKE;
        public final String REGISTRATION_NUMBER;
    }
    public Car(String make, String regNumber) {
        constants.MAKE = make;
        constants.REGISTRATION_NUMBER = regNumber;
    }
}
4

1 に答える 1

9

Constantsクラスのインスタンスがどこかに必要なため、あなたがしようとしていることはうまくいきません。1つの方法は以下のようにすることですが、その定数について定数は何もありません...

public class Car {
    class Constants {
        public final String MAKE;
        public final String REGISTRATION_NUMBER;
        private Constants(String make, String regNumber) {
            this.MAKE = make;
            this.REGISTRATION_NUMBER = regNumber;
        }
    }

    public final Constants constants;
    public Car(String make, String regNumber) {
        this.constants = new Constants(make, regNumber);
    }
}

その後、次のように呼び出すことができます。

Car car = new Car("abc", "def");
String make = car.constants.MAKE;

注:おそらくより良い(そしてよりシンプルな)設計は

public class Car {
    private final String make;
    private final String regNumber;

    public Car(String make, String regNumber) {
        this.make = make;
        this.regNumber = regNumber;
    }

    //getters
}
于 2012-09-11T16:05:25.097 に答える