インタフェースのフィールド
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
Config.MAX = 20;
System.out.println(Config.MAX);
}
}
interface Config {
int MAX = 10;
}
- A
20と出力される - B
10と出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: インタフェースのフィールドには代入できないので、コンパイルエラーです。実行まで進まないので、何も出力されません。
- B: 実行まで進まないので、何も出力されません。
- C: コンパイルの時点でエラーになるので、実行時の例外にはなりません。
- D: インタフェースのフィールドは暗黙に public static final (定数) なので、Config.MAX = 20 はコンパイルエラーです。
ポイント
- インタフェースのフィールドは、書かなくても public static final (定数) です。値を変えられません。