はじめに
この実験では、Java における列挙型について学びます。列挙型は、Java の特殊なデータ型で、固定された定数のセットを定義することができます。Java で列挙型を作成、使用、および操作する方法を学びます。
この実験では、Java における列挙型について学びます。列挙型は、Java の特殊なデータ型で、固定された定数のセットを定義することができます。Java で列挙型を作成、使用、および操作する方法を学びます。
~/project
ディレクトリに StudentResult.java
という名前の新しいファイルを作成します。StudentResult
という名前の列挙型を作成します。public enum StudentResult {
PASS,
FAIL,
ABSENT
}
~/project
ディレクトリに Demo.java
という名前の新しいファイルを作成します。StudentResult
列挙型の変数を作成してその値を使用します。public class Demo {
public static void main(String[] args) {
StudentResult result1 = StudentResult.ABSENT;
StudentResult result2 = StudentResult.FAIL;
StudentResult result3 = StudentResult.PASS;
System.out.println(result1);
System.out.println(result2);
System.out.println(result3);
}
}
javac Demo.java && java Demo
StudentResult
列挙型を使用します。public class Demo {
public static void main(String[] args) {
StudentResult result = StudentResult.FAIL;
if(result == StudentResult.ABSENT)
System.out.println("The student was absent for the exam.");
else if(result == StudentResult.PASS)
System.out.println("The student passed the exam.");
else if(result == StudentResult.FAIL)
System.out.println("The student failed the exam.");
}
}
StudentResult
列挙型を使用します。public class Demo {
public static void main(String[] args) {
StudentResult result = StudentResult.FAIL;
switch(result) {
case ABSENT : System.out.println("The Student was absent for the exam.");
break;
case PASS : System.out.println("The Student passed the exam.");
break;
case FAIL : System.out.println("The Student failed the exam.");
break;
}
}
}
StudentResult
列挙型を反復処理します。public class Demo {
public static void main(String[] args) {
StudentResult[] resultArr = StudentResult.values();
for(StudentResult sr : resultArr) {
System.out.println(sr + " at index " + sr.ordinal());
}
}
}
toString()
メソッドを使用するために以下のコードを追加します。public class Demo {
public static void main(String[] args) {
for(StudentResult sr : StudentResult.values()) {
String resultStr = sr.toString();
System.out.println("大文字: " + resultStr);
System.out.println("小文字: " + resultStr.toLowerCase());
System.out.println();
}
}
}
public class Demo {
public static void main(String[] args) {
String resultStr = "FAIL";
StudentResult result = StudentResult.valueOf(resultStr);
System.out.print("文字列からの列挙型: " + result);
}
}
javac Demo.java && java Demo
public class Student {
String name;
StudentResult result;
// 列挙型を定義する
enum StudentResult {
PASS,
FAIL,
ABSENT;
}
// コンストラクタ
Student(String s, StudentResult sr) {
name = s;
result = sr;
}
// 列挙型のif-elseメソッド
public void printResult() {
if (this.result == StudentResult.ABSENT)
System.out.println(this.name + "は試験に欠席しました。");
else if (this.result == StudentResult.PASS)
System.out.println(this.name + "は試験に合格しました。");
else
System.out.println(this.name + "は試験に不合格でした。");
}
// 列挙型のメソッド
public boolean wasAbsent() {
if (this.result == StudentResult.ABSENT)
return true;
else
return false;
}
// メインメソッド
public static void main(String[] args) {
Student s1 = new Student("Justin", StudentResult.ABSENT);
Student s2 = new Student("Jessica", StudentResult.PASS);
s1.printResult();
s2.printResult();
System.out.println("学生s1は欠席していました: " + s1.wasAbsent());
}
}
javac Student.java && javac Demo.java && java Student
import java.util.EnumSet;
enum StudentResult {
PASS,
FAIL,
ABSENT;
}
public class Demo {
public static void main(String[] args) {
EnumSet<StudentResult> resultSet1 = EnumSet.of(StudentResult.FAIL, StudentResult.PASS);
EnumSet<StudentResult> resultSet2 = EnumSet.allOf(StudentResult.class);
System.out.println("Enum Set-1: " + resultSet1);
System.out.print("Enum Set-2: " + resultSet2);
}
}
import java.util.EnumMap;
import java.util.Map;
enum StudentResult {
PASS,
FAIL,
ABSENT;
}
public class Demo {
public static void main(String[] args) {
EnumMap<StudentResult, String> resultMap = new EnumMap<>(StudentResult.class);
resultMap.put(StudentResult.PASS, "Student Passed the exam");
resultMap.put(StudentResult.FAIL, "Student Failed the exam");
resultMap.put(StudentResult.ABSENT, "Student was absent for the exam");
for (Map.Entry<StudentResult, String> e : resultMap.entrySet())
System.out.println(e.getKey() + " --> " + e.getValue());
}
}
この実験では、列挙型を作成する方法、if-else文とswitch文で使用する方法、列挙型を反復処理する方法、そのtoString()メソッドを使用する方法、文字列を使って列挙型を作成する方法、クラス内で列挙型を作成する方法、列挙型定数を効率的に格納するためにEnumSetを使用する方法、列挙型のキー-値ペアを格納するためにEnumMapsを使用する方法、および列挙型で具象メソッドと抽象メソッドを使用する方法を学びました。また、列挙型は定数値のコレクションを定義するために使用され、Javaにおいて型安全性を向上させることも学びました。