まず、列挙
1.概要
列挙:JDK1.5は1つのアウトによって網羅リスト1と同様に、導入
Javaの列挙:タイプのオブジェクトは、すべて記載されています
2、アプリケーション
列挙型は、どのような状況下で使用され、?
オブジェクトが固定されており、限られた数のタイプであるとき、あなたは列挙型を使用するように選択することができます。
システム全体の動作中、およびこれらのオブジェクトのみ。
たとえば、次のように性別クラス:2つのだけのオブジェクト:男性、女性
シーズンクラス:春、夏、秋と冬:4つのオブジェクトがあります。
第二には、JDK1.5の前に、列挙の効果を達成するために
1、コンストラクタを民営化する必要があります。
目的:このクラスのうち、あなたはランダムなオブジェクトを作成することはできません。
このクラスでは2、使用する他の人のために作成されたオブジェクトの先駆け
デモ:
1 パブリック クラスTestEnum {
2 公共 静的 ボイドメイン(文字列[]引数){
3。 // 性別新しい新しいG1 =性別();コンストラクタ民営化、使用することができない
4。
5。 性別NAN1 = Gender.NAN;
6 ジェンダーNAN2 = ジェンダー。 NANから;
7。 のSystem.out.println(NAN1 == NAN2); // trueに
8。 }
9。 }
10 クラス性別{
11 // 公衆:外部に直接アクセスするように
12である // スタティック:アクセスの使用を可能にする"クラス名"
13です // 決勝:調整前のこのオブジェクトは不変である
14 公共の 静的な 最終性別NANは= 新しい性別を(「男」);
15 公共の 静的な 最終性別NVは= 新しい性別を( "女" );
16
17 プライベート文字列の記述。
18
19 プライベート性別(文字列の記述){
20 この .DESCRIPTION = 説明。
21 }
22 }
第三に、後にJDK1.5のenum
1.定義フォーマット
(1)は、列挙型を宣言する
[修飾子]列挙列挙型名{
一定のオブジェクトリスト
}
(2)列挙型を宣言2
[修飾子]列挙列挙型名{
一定のオブジェクトリスト;
リストの他のメンバー
}
説明:バックの他のメンバーがある一定のオブジェクトリスト場合は、リストの背後にある一定のオブジェクトに追加する必要があり、セグメンテーションを。
2.列挙
(1)は、列挙型であり、その目的は、一定のオブジェクトの限られた数であり、特に、特殊なタイプです。
(2)枚举类型不能继承其他类型,因为枚举类型有一个隐含的父类
java.lang.Enum 是所有 Java 语言枚举类型的公共基本类。
3、常用方法
(1)构造方法
Enum 类中有一个唯一的构造器
protected Enum(String name, int ordinal)
这个构造器不是程序员手动调用的,是编译器自动调用,在所有枚举类型的构造器的首行,并且自动传入 name 和 ordinal 的值。
name:表示常量对象名称
ordinal:表示常量对象的序号,其中初始常量序数为零
(2)name() 与 ordinal() 方法
String name():返回 常量对象名称
int ordinal():返回 常量对象序数
(3)toString() 方法
String toString():在Enum类中重写了Object类的toString方法,返回常量对象名
自定义的枚举类型,eclipse不能自动生成 toSring 方法,但是可以手动重写。因为IDE认为,父类的 toString方法已经很完美了。
(4)values() 与 valueof() 方法
枚举类型[] values():返回该枚举的所有枚举对象
枚举类型 valueOf(String name):根据name返回枚举对象
Demo:
1 public class TestEnum {
2 public static void main(String[] args) {
3 Season s = Season.SPRING;
4 System.out.println(s);//自动调用toString
5
6 System.out.println(s.name());
7 System.out.println(s.ordinal());
8 System.out.println("-----------------");
9
10 Season[] all = Season.values(); //获取所有枚举对象
11 for (int i = 0; i < all.length; i++) {
12 System.out.println(all[i]);
13 }
14
15 System.out.println("-----------------");
16 Season spring = Season.valueOf("SPRING");
17 System.out.println(spring);
18 }
19 }
20 enum Season{
21 //常量对象后面没有(值)就是调用无参构造
22 //常量对象后面有(值)就是调用有参构造
23 SPRING("春暖花开"),SUMMER,FALL,WINTER;
24
25 private String description;
26
27 private Season() {
28
29 }
30
31 private Season(String description) {
32 this.description = description;
33 }
34 // 手动重写 toString() 方法
35 public String toString(){
36 return name() + ":" + description;
37 }
38
39 }
四、枚举类型实现接口
枚举实现接口要重写所有的抽象方法,所有对象可以都调用通用的重写方法,也可以调用各自重写的方法。
Demo:
1 public class TestEnum {
2 public static void main(String[] args) {
3 MyEnum a = MyEnum.A;
4 a.test();
5
6 MyEnum b = MyEnum.B;
7 b.test();
8 }
9 }
10 interface MyInter{
11 void test();
12 }
13 enum MyEnum implements MyInter{
14 A{
15 @Override
16 public void test() {
17 System.out.println("aaa");
18 }
19 },B{
20 @Override
21 public void test() {
22 System.out.println("bbb");
23 }
24 }
25 }
26 enum MyEnum1 implements MyInter{
27 A,B;
28
29 @Override
30 public void test() {
31 System.out.println("test");
32 }
33 }