Java之枚舉類和注解


1、總結

在某些情況下,一個類的對象是有限而且固定的。例如季節類,只能有 4 個對象
手動實現枚舉類:

  1. private 修飾構造器
  2. 屬性使用 private final 修飾
  3. 把該類的所有實例都使用 public static final 來修飾

枚舉類和普通類的區別:

  1. 使用 enum 定義的枚舉類默認繼承了 java.lang.Enum 類
  2. 枚舉類的構造器只能使用 private 訪問控制符
  3. 枚舉類的所有實例必須在枚舉類中顯式列出(, 分隔 ; 結尾). 列出的實例系統會自動添加 public static final 修飾
  4. 所有的枚舉類都提供了一個 values 方法, 該方法可以很方便地遍歷所有的枚舉值

2、代碼

public class Test3 {
	public static void main(String[] args) {
		Season spring = Season.SPRING;//Season.SPRING這段執行就是獲取一個Season對象
		spring.showInfo();
//		System.out.println(Season.values());
		Season spring1 = Season.SPRING;
		spring1.showInfo();
		//每次執行Season.SPRING獲取的是相同的對象,枚舉類中的每個枚舉都是單例模式
		System.out.println(spring.equals(spring1));//true
		
	}
}

enum Season implements Itest{
	SPRING("春天","春暖花開"),//此處相當於在調用有參的所有構造private Season(String name,String desc)
	SUMMER("夏天","炎炎夏日"),
	AUTUMN("秋天","秋高氣爽"),
	WINTER("冬天","冬風凜冽");
	
	private final String name;
	private final String desc;
	private Season(String name,String desc) {
		this.name = name;
		this.desc = desc;
	}
	
	public void showInfo() {
		System.out.println(this.name+":"+this.desc);
	}

	@Override
	public void test() {
		System.out.println("這是實現Itest接口的test方法");
	}
	
}

//實現接口的枚舉類
interface Itest{
	void test();
}

注解

從 JDK 5.0 開始, Java 增加了對元數據(MetaData) 的支持, 也就是 Annotation(注釋)
Annotation 其實就是代碼里的特殊標記, 這些標記可以在編譯, 類加載, 運行時被讀取, 並執行相應的處理. 通過使用 Annotation, 程序員可以在不改變原有邏輯的情況下, 在源文件中嵌入一些補充信息.

三個基本的 Annotation:

  1. @Override: 限定重寫父類方法, 該注釋只能用於方法
  2. @Deprecated: 用於表示某個程序元素(類, 方法等)已過時
  3. @SuppressWarnings: 抑制編譯器警告.
public class Test4 {
	public static void main(String[] args) {
		new testInfo().test1();//@Deprecated用於表示某個程序元素(類, 方法等)已過時
		@SuppressWarnings({ "unused", "rawtypes" })
		List list = new ArrayList();//@SuppressWarnings: 抑制編譯器警告. 
	}
}

class testInfo{
	void test() {}
	@Deprecated
	void test1() {}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM