国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 淺析Java編程中枚舉類型的定義與使用

淺析Java編程中枚舉類型的定義與使用

2020-04-22 11:50LZGS_4 JAVA教程

這篇文章主要介紹了Java編程中枚舉類型的定義與使用,簡單講解了enum關鍵字與枚舉類的用法,需要的朋友可以參考下

定義枚舉類型時本質上就是在定義一個類,只不過很多細節由編譯器幫您補齊了,所以某些程度上,enum關鍵字的 作用就像是class或interface。

當您使用"enum"定義枚舉類型時,實質上您定義出來的類型繼承自 java.lang.Enum 類,而每個枚舉的成員其實就是您定義的枚舉類型的一個實例(Instance),它們都被默認為 final,所以您無法改變它們,它們也是 static 成員,所以您可以透過類型名稱直接使用它們,當然最重要的,它們都 是公開的(public)。

舉個例子:

?
1
2
OpConstants.java
public enum OpConstants {TURN_LEFT, TURN_RIGHT, SHOOT}

在這個例子中,OpConstants繼承自 java.lang.Enum,每個枚舉成員如TURN_LEFT、TURN_RIGHT、SHOOT,它們都是OpConstants的一個對象實例, 即是 對象實例,上面自然有一些方法可以采用,例如toString()方法被覆蓋了,可以讓您直接取得枚舉值的字符串描述,而枚舉對象定義的values ()方法可以讓您取得所有的枚舉實例,并以數組方式傳回,您使用這兩個方法來簡單的將OpConstants的內容顯示出來:

?
1
2
3
4
5
6
7
8
ShowEnum.java
public class ShowEnum {
  public static void main(String[] args) {
    for(OpConstants constant: OpConstants.values()) {
      System.out.println(constant.toString());
    }
  }
}

基本上println()會自動調用toString(),所以不寫toString()其實也是可以的,執行結果如下:

?
1
2
3
TURN_LEFT
TURN_RIGHT
SHOOT

您可以使用 "==" 或是 equals() 方法來比較枚舉對象,""==""會比較您提供的枚舉對象是不是同一個(也就是占據同一個內存位置),而equals()則是實質的比較兩個枚舉對象的內容,默認會根據枚舉的字符串值來比較。

valueOf()方法可以讓您將指定的字符串嘗試轉換為枚舉實例,您可以使用compareTo()方法,這可以比較兩個枚舉對象在枚舉時的順序,下面舉個例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
ShowEnum.java
public class ShowEnum {
  public static void main(String[] args) {
    enumCompareTo(OpConstants.valueOf(args[0]));
  }
 
  public static void enumCompareTo(OpConstants constant) {
    System.out.println(constant);
    for(OpConstants c: OpConstants.values()) {
      System.out.println(constant.compareTo(c));
    }
  }
}

執行結果:

?
1
$java ShowEnum TURN_RIGHT
?
1
2
3
4
TURN_RIGHT
1
0
-1

傳回正值,表示順序在被比較的枚舉對象之前,負值表示之后,而0則表示兩個互比枚舉值的位置是相同的。

對于每一個枚舉成員,我們可以使用ordinal()方法,依枚舉順序得到位置索引,默認以 0 開始,例如:

?
1
2
3
4
5
6
7
8
ShowEnum.java
public class ShowEnum {
  public static void main(String[] args) {
    for(OpConstants c : OpConstants.values()) {
      System.out.printf("%d %s%n", c.ordinal(), c);
    }
  }
}

執行結果:

?
1
2
3
0 TURN_LEFT
1 TURN_RIGHT
2 SHOOT

enum關鍵字可用于定義一個枚舉類,可以把相關常量寫在一個類里,下面我們再來看個例子。

如下代碼:       

?
1
2
3
4
5
6
7
8
9
10
11
class TestClass {
 
  private TestClass(){}//定義私有構造函數,不能從外部實例化對象
 
  //提供兩個實例A、B
 
  public static final TestClass A=new TestClass();
 
  public static final TestClass B=new TestClass();
 
}

可以用枚舉類型代替:

?
1
2
3
4
5
enum TestClass01{
 
  A,B;
 
}

用法:

一個枚舉也可以有構造函數、字段和方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
enum TestClass02{
 
  A("a") //建立對象時傳入構造函數參數
 
  ,B("b");
 
  private String value;
 
  private TestClass02(String value){
 
    this.value=value;
 
  }
 
  public String getValue(){
 
    return this.value;
 
  }
 
}

枚舉也可以有抽象方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
enum TestClass03{
 
  A(){
 
  //實現抽象方法
 
  public void type(){
 
    System.out.println("優");
 
  }
 
  }
 
  ,B(){
 
  public void type(){
 
    System.out.println("良");
 
  }
 
  };
 
  public abstract void type();//定義抽象方法
 
}

測試方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class Test02 {
 
  public static void main(String[] args){
 
    print(TestClass02.A);//傳入枚舉參數
 
  }
 
  public static void print(TestClass02 t){
 
    System.out.println(t.getValue());
 
  }
 
enum TestClass02{
 
  A("a")
 
  ,B("b");
 
  private String value;
 
  private TestClass02(String value){
 
    this.value=value;
 
  }
 
  public String getValue(){
 
    return this.value;
 
  }
 
}
 
}

運行結果:

?
1
2
3
4
a
 
Author:事始
Sign:只要你還在嘗試,就不算失敗。

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产精品视频一区二区三区 | 亚洲一区二区三区视频 | 久久艹精品 | 日韩免费在线视频 | 午夜免费电影 | 成人在线高清 | 在线观看日韩精品 | 天天色成人综合网 | 国产精品综合一区二区 | 久久久久亚洲 | 国产黄色91视频 | 视频在线一区二区三区 | 亚洲在线一区二区三区 | 在线观看一区二区三区视频 | 在线小视频国产 | 欧美一区二区三区免费 | 久久中文字幕av | 国产片免费看 | 一级毛片国产 | 久久久久国产精品免费免费搜索 | 超色视频在线观看 | 日韩一区二区在线观看 | 欧美成人一区二区三区片免费 | 九九九在线 | 97色综合| 中文字幕一区在线观看视频 | 国产一区| 国产一区二区在线免费 | 91成人精品 | 欧美日韩在线一区 | 毛片免费在线 | 成人综合色区 | 精品一区在线 | 国产精品久久久久久久久免费桃花 | 中文字幕一区二区三区在线观看 | 91 在线 | 国产精品久久av | 黑人精品欧美一区二区蜜桃 | 午夜精品久久久久久久久 | 国产精品不卡视频 | 亚洲精品综合 |