よくわからないことを調べて解説してみるブログ。
2015
まとめ
・Enumクラスは抽象クラスである。
・EnumクラスはComparableを実装している。
・Enumクラスはequalsをfinal実装している。
・列挙型はEnumクラスを実装している。
・列挙型における列挙値は列挙型の実装である。
・Enumクラスでは、ordinalと呼ばれる順序付け変数を持っており、
列挙値のデフォルトコンストラクタの引数で与えられる。
この引数は、列挙型における列挙値の定義順と同値。
・列挙型は、インタフェースを実装することが出来る。
・列挙型は、new によるインスタンス化はできない。
・列挙型は、メソッドを定義出来る。呼び出し方法は、列挙値.メソッド名。
・列挙型は、抽象メソッドを定義出来る。列挙値ブロックで@Overrideを実装必須。
・列挙型は、内部にインタフェースを定義することが出来る。
併せて読みたい生かし方
・[Java] enum basics
・[Java] enumをもうちょっと使う
・Enumクラスは抽象クラスである。
・EnumクラスはComparableを実装している。
・Enumクラスはequalsをfinal実装している。
・列挙型はEnumクラスを実装している。
・列挙型における列挙値は列挙型の実装である。
・Enumクラスでは、ordinalと呼ばれる順序付け変数を持っており、
列挙値のデフォルトコンストラクタの引数で与えられる。
この引数は、列挙型における列挙値の定義順と同値。
・列挙型は、インタフェースを実装することが出来る。
・列挙型は、new によるインスタンス化はできない。
・列挙型は、メソッドを定義出来る。呼び出し方法は、列挙値.メソッド名。
・列挙型は、抽象メソッドを定義出来る。列挙値ブロックで@Overrideを実装必須。
・列挙型は、内部にインタフェースを定義することが出来る。
併せて読みたい生かし方
・[Java] enum basics
・[Java] enumをもうちょっと使う
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
public class EunmMethod {
public static void main(String[] args) {
System.out.println(Arrays.asList(AttackType.values()));
System.out.println(AttackType.valueOf("PANCH"));
System.out.println("----------------------------------------------");
// インタフェースへのポリモフィズムは有効
List list = new ArrayList();
list.add(AttackType.THROW);
list.add(AttackType.PANCH);
list.add(AttackType.KICK);
// Collections.sort(list);// コンパイルエラー。擬態の結果、Enumに実装されていたComparableは未実装扱いに。当然といえば、当然か。
for (AttackTypeInterface superAttackType : list) {
System.out.println(superAttackType);
}
System.out.println("----------------------------------------------");
List list2 = new ArrayList();
list2.add(AttackType.THROW);
list2.add(AttackType.PANCH);
list2.add(AttackType.KICK);
Collections.sort(list2); // ENUM実装クラスにおける列挙順にソートする。Enumに実装されているComparable#compareToによる。
for (AttackTypeInterface superAttackType : list2) {
System.out.println(superAttackType + ", ordinal = " + ((AttackType)superAttackType).ordinal()); //順番の表示
}
System.out.println("----------------------------------------------");
EnumSet enumSet = EnumSet.allOf(AttackType.class); // Enum実装クラスの集合生成
// EnumSet enumIfSet = EnumSet.allOf(AttackTypeInterface.class);
// 上記は、シグネチャ違反になりコンパイルエラー。public static > EnumSet allOf(Class elementType)
for (AttackType attackType : enumSet) {
System.out.println(attackType);
}
}
}
interface AttackTypeInterface {
void allCheck();
}
enum AttackType implements AttackTypeInterface {
PANCH, KICK, THROW, ;
@Override
public void allCheck() {
for (AttackType element : Arrays.asList(AttackType.values())) {
System.out.println(this == element);
}
}
// equals はオーバーライドできない。Enum型のfinalメソッドとなっている。
@Override
public String toString() {
return super.toString();
}
}
実行結果
[PANCH, KICK, THROW]PANCH----------------------------------------------THROWPANCHKICK----------------------------------------------PANCH, ordinal = 0KICK, ordinal = 1THROW, ordinal = 2----------------------------------------------PANCHKICKTHROW
PR
Post your Comment
<<
[OCJP]内部クラスと外部クラスのメンバ名重複時のアクセス方法
| HOME | [OCJP]equalsメソッドとhashCodeの対偶性忍者ブログ [PR] * Template by TMP
>>
プロフィール
HN:
たんてーくん
性別:
非公開
最新記事
(03/29)
(03/29)
(06/26)
(05/21)
(04/23)
カテゴリー
最新CM
[09/25 http://2017.bblbuy.com]
[09/24 http://www.japanform.com]
[09/23 http://www.japanform.com]
[09/22 http://www.japanform.com]
[09/21 http://2017.bblbuy.com]
ブログ内検索
