[ファイン]の原則を作成するには、列挙型クラス
I.はじめに
列挙クラスは、一般的に、サービスビジネスシナリオの異なる状態で説明したように一般的に使用される定数を、必要とするアプリケーションのセットを定義します。
第二に、クラス定義の列挙
1、列挙クラスの役割
定数の固定セットの一定の数を求めます。
2、どのような下の状況は、クラスを列挙しました
推奨列挙クラスの定数のセットを定義し、定数が固定されている数は、定数を得ます。
図3に示すように、取得された列挙クラスの定数を使用することの利点
*列挙クラスのコンストラクタはので、他のクラスは、クラスオブジェクトの定数の数が固定されていることを確認するために、クラスのオブジェクトを作成することはできません、プライベートです。
*型セキュリティ:コール列挙型クラスのみがスローされますノー定義名を渡し、定義されたオブジェクト名を渡すことができます。
第三に、列挙型を作成します
列挙クラスはjava5.0バージョンである以前にクラスが列挙されていない機能を追加します。
列挙クラスを作成するには2つの方法がありますが、カスタム列挙型列挙型列挙公式に進化し最初のクラスは、列挙型列挙クラスのjava公式の原則を推定しました。
- カスタム列挙クラス
//自定义枚举类
public class EnumTest {
//1、申明 EnumTest 对象的属性
private final String name;
//2、私有化类的构造器
private EnumTest(String name) {
this.name = name;
}
//3、创建枚举类的对象
public static final EnumTest SPRING = new EnumTest("春天");
public static final EnumTest SUMMER = new EnumTest("夏天");
public static final EnumTest AUTUMN = new EnumTest("秋天");
public static final EnumTest WINTER = new EnumTest("冬天");
//4、获取枚举类对象的属性
public String getName() {
return name;
}
//5、提供toString
@Override
public String toString() {
return "EnumTest{" +
"name='" + name + '\'' +
'}';
}
}
- 列挙型列挙型クラス
カスタム列挙型クラスの違いを観察すると、次が作成した公式の列挙クラスの列挙列挙型クラスのインスタンスによって提供されるこの要約:
列挙クラス原則enumキーワードの作成:
* 1.列挙列挙型クラスは、オブジェクト名のみを残して、コードが簡略化された複製オブジェクトを作成します。次のような効果を簡素化します。
*簡易フロント:のpublic static final EnumTest ばねが新しい新EnumTest( "春")=;
*に単純化:SPRING( "春")
*
カンマで割った複数のオブジェクトのうち* 2、そして最後にセミコロンで終わります。
* SPRING( "春")、
* SUMMER( "夏")、
* AUTUMN( "秋")、
* WINTER( "冬");*
* 3。というよりも継承java.lang.Enum継承デフォルト列挙型クラス、オブジェクトクラス。
*例:公共列挙EnumPassコンパイルされたクラスが列挙最終公開延びクラスEnumPassある
*
* 4 java.lang.EnumオーバーライドデフォルトのtoStringメソッドを、したがって列挙クラスtoStringメソッドに書き込まなくてもよいです。カスタム
* OBJEC継承列挙型クラスは、toStringメソッドを書き換える必要があります。
public enum EnumPass {
/**
* enum 关键字创建枚举类原理:
* 1.使用enum 枚举类创建对象将重复的代码进行了简化,简化效果如下。
* 简化前:public static final EnumTest SPRING = new EnumTest("春天");
* 简化后:SPRING("春天"),
*
* 2.多个对象之间用逗号 分割,最后用 分号结束
*
* 3.枚举类默认继承java.lang.Enum,而不是继承Object类。
* 例如:public enum EnumPass 类 编译后是这样的 public final class EnumPass extends Enum
*
* 4. java.lang.Enum默认重写了toString方法,因此在枚举类中可以不写toString方法。自定义的
* 枚举类继承Objec,所以需要重写toString方法。
*/
SPRING("春天"),
SUMMER("夏天"),
AUTUMN("秋天"),
WINTER("冬天");
//2、申明 EnumTest 对象的属性
private final String name;
//3、提供有参构造器
EnumPass(String name) {
this.name = name;
}
//4、获取枚举类对象的属性
public String getName() {
return name;
}
}
第四に、列挙クラスを呼び出します
public class App {
public static void main(String[] args) {
//第一种方式,自定义枚举类
EnumTest spring = EnumTest.SPRING;
System.out.println("自定义枚举类:"+spring);
//第二种方式,enum关键类创建枚举类
EnumPass spring1 = EnumPass.SPRING;
System.out.println("enum创建枚举类:" +spring1.getName());
}
}
テスト結果
自定义枚举类:EnumTest{name='春天'}
enum创建枚举类:春天