Java Gold SE7対策問題 – 問15

この記事は2016年2月2日に書かれたものです。内容が古い可能性がありますのでご注意ください。


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"
}
  1. コンパイルエラーが発生する
  2. java.lang.IllegalArgumentException実行時エラーが発生する
  3. java.lang.ArrayIndexOutOfBoundsException実行時エラーが発生する
  4. 「季節を入力してください。[SPRING, SUMMER, AUTUMN, WINTER]」と出力される
  5. 「3月から8月」と出力される
  6. 何も出力されない

問15の解答・解説と問16はこちら

  • このエントリーをはてなブックマークに追加

PAGE TOP