Javaの認定資格「Oracle Certified Java Programmer, Gold SE 7」。通称JavaGoldのオリジナル問題を紹介していきたいと思います。
前回の解答
まずは、前回の解答から。
正解は「(2)」となります。
列挙型はjava.lang.Enumクラスを継承した”final”クラスとなります。そのため、列挙型を継承して新たなクラスを作ることはできません。
(3)と(4)は少々意地悪な問題だったかもしれません。一覧でまとめておきますので、どのようなメソッドがあるか確実に押さえておきましょう。
| 修飾子 | メソッド名 | 説明 |
|---|---|---|
| static | 列挙型[] values() | 列挙した値を全て配列で返す |
| static | 列挙型 valueOf(String name) | 引数で指定された文字列の値を持つ列挙値を返す |
| – | String name() | enum定数の名前を文字列で返す |
| – | String toString() | enum定数の名前を文字列で返す。name()と同じだが、toString()はオーバーライドでき、name()はオーバーライドできない。 |
| – | int ordinal() | 列挙宣言での位置を返す |
| – | boolean equals(Object other) | 引数で指定されたオブジェクトがthisのenum定数と同じ場合はtrueを返す |
| – | int hashCode() | enum定数のハッシュコードを返す |
問15
次のプログラムを以下のように実行しました実行結果として正しいものを1つ選んでください。なお、クラスパスは正しく設定されているものとする。
$ java -cp bin techpjin.Lesson15 spring
package techpjin;
public class Lesson15 {
public static void main(String[] args) {
if(args.length != 1) {
System.out.println("季節を入力してください。[SPRING, SUMMER, AUTUMN, WINTER]");
return;
}
Seasons s = Seasons.valueOf(args[0]);
switch (s) {
case SPRING:
case SUMMER:
System.out.println("3月から8月");
break;
case AUTUMN:
case WINTER:
System.out.println("9月から2月");
break;
}
}
}
enum Seasons{
"SPRING", "SUMMER", "AUTUMN", "WINTER"
}
- コンパイルエラーが発生する
- java.lang.IllegalArgumentException実行時エラーが発生する
- java.lang.ArrayIndexOutOfBoundsException実行時エラーが発生する
- 「季節を入力してください。[SPRING, SUMMER, AUTUMN, WINTER]」と出力される
- 「3月から8月」と出力される
- 何も出力されない
問15の解答・解説と問16はこちら