【Java】Annotation

將配置寫在程序裏,但是和之前的程序作出區分,因此形成了註解。通過註解控制操作。

JDK內置的三個註解:@Override、@Deprecated、@SuppressWarnings

準確覆寫:@Override

方法覆寫:發生在繼承關係中,子類定義了與父類的方法相同、參數 類型及個數、返回值類型 相同方法的時候稱爲方法的覆寫,被覆寫的方法不能夠用於比父類更爲嚴格的訪問控制權限。

例:觀察方法的覆寫


class Person {
	//現在希望進行toString()的覆寫,但是由於輸入錯誤,導致方法的覆寫錯誤
	public String tostring() {  //本意是想進行toString方法的覆寫
		return "Hello World";
	}
}

public class TestDemo {
	public static void main(String[] args) {
		System.out.println(new Person());
	}
}

輸出結果:Person@4b1210ee。 這種錯誤在編譯的時候並不會提示。

爲了保證覆寫方法的嚴格準確,可以使用註解(@Override)來檢測:如果該方法確定成功地覆寫了,則不會有語法錯誤;如果沒有成功地覆寫,則認爲是語法錯誤。

在tostring方法處加了註解@Override後,出現如下錯誤:The method tostring() of type Person must override or implement a supertype method。


class Person {
	//現在希望進行toString()的覆寫,但是由於輸入錯誤,導致方法的覆寫錯誤
	@Override //追加了此註解後將明確表示該方法是一個覆寫的方法,如果覆寫錯誤,則會出現語法錯誤
	public String toString() {  //本意是想進行toString方法的覆寫
		return "Hello World";
	}
}

public class TestDemo {
	public static void main(String[] args) {
		System.out.println(new Person());
	}
}

輸出結果爲:Hello World.

聲明過期處理:@Deprecated

如果說現在你有一個程序類,從項目的1.0版本一直到了77.0版本都在使用着,但是從78.0版本之後你發現該配置可能會產生問題,那麼此時不能直接刪除這個類換個新的,因爲有可能其他舊版本還在使用這個類,並且這個類在舊版本中沒有問題。所以這個時候就希望再進行新版本擴展的時候不要再去使用這個不建議的類,所以加一個過期的註解。

例:觀察過期操作

class Person {
	@Deprecated //表示該方法已經不建議使用了,但是即使使用了也不會出錯 
	public Person() {}
	public Person(String name) {}
	@Deprecated
	public void fun() {}
}

public class TestDemo {
	public static void main(String[] args) {
		Person per = new Person();//明確地標記出過期
		per.fun();
		per = new Person("");
	}
}

這種過期的處理操作往往出現在一些平臺支持的工具上,如:JDK就是一個平臺,所以在JDK裏實際上有很多的方法都不建議用戶再繼續使用了。

壓制警告:@SuppressWarnings

當調用了某些操作可能產生問題的時候就會出現警告信息,但是警告信息並不是錯誤,在開發者的可控訪問裏認爲警告沒有意義,此時又不想總提示警告,就可以對警告進行限制。

爲Person類加了個泛型,但是使用的時候並沒有指定類型,所以會出現警告。

壓制警告可以在對象上,也可以在方法上,如下是用在方法上:

總結

這三種Annotation是JDK默認支持的程序類中使用的,以後會接觸到一些功能性的Annotation

發佈了154 篇原創文章 · 獲贊 48 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章