1,掌握系統內建的三個Annotation。數組
Annotation被稱爲元數據特效,也被稱爲註釋,即:使用註釋方式,加入一些程序信息。安全
Java.lang.annotation接口是全部Annotaion必須實現的接口。ide
系統已經內建的三個Annotation:this
@Override:覆寫的Annotation. @Deprecated:不同意使用的Annotation @SuppressWarning:壓制安全警告的Annotation
@overrride表示方法覆寫的正確性,例如,以下代碼:spa
package 類集; class Person{ public String getInfo(){ // 取得信息 return "這是一個Person類。" ; } }; class Student extends Person{ // 繼承此類 public String getInfo(){ // 覆寫方法 return "這是一個Student類。" ; } }; public class GetInterfaceDemo { public static void main(String[] args) throws Exception { Person per = new Student() ; System.out.println(per.getInfo()) ; // 輸出信息 } }
此時,可能存在某種事物,將方法名稱getInfo編寫錯誤。例如寫成getinfo,大小寫錯誤,這個時候code
爲了保證覆寫正確性,添加覆寫屬性。Overrride,保證程序正確執行。blog
例如,寫成下面,就會報錯。繼承
package 類集; class Person{ public String getInfo(){ // 取得信息 return "這是一個Person類。" ; } }; class Student extends Person{ // 繼承此類 @Override public String getinfo(){ // 覆寫方法,這裏覆寫的方法大小寫錯誤了,就會報錯。 return "這是一個Student類。" ; } }; public class GetInterfaceDemo { public static void main(String[] args) throws Exception { Person per = new Student() ; System.out.println(per.getInfo()) ; // 輸出信息 } }
使用Deprecated註釋的Annotation自己是不建議使用的操做,接口
註釋方法:字符串
package 類集; class Demo{ @Deprecated // 聲明不建議使用的操做 public String getInfo(){ return "這是一個Person類。" ; } }; public class GetInterfaceDemo { public static void main(String[] args) throws Exception { Demo d = new Demo() ; System.out.println(d.getInfo()) ; } }
以上程序並不會使得編譯出差,可是會產生一個警告信息。
還能夠註釋類:
package 類集; @Deprecated // 聲明不建議使用的操做 class Demo{ public String getInfo(){ return "這是一個Person類。" ; } }; public class GetInterfaceDemo { public static void main(String[] args) throws Exception { Demo d = new Demo() ; System.out.println(d.getInfo()) ; } }
用於壓制警告信息,
以以前的泛型操做爲例,在泛型中若是沒有指定泛型類型,則使用時候確定出現安全警告。
正常狀況不使用annotation。沒有指定泛型類型。
package 類集; class Demo<T>{ private T var ; public T getVar(){ return this.var ; } public void setVar(T var){ this.var = var ; } }; public class GetInterfaceDemo { public static void main(String args[]){ Demo d = new Demo() ;//由於沒有給泛型指定類型,這裏會有警告 d.setVar("小華") ; //這裏會有警告 System.out.println("內容:" + d.getVar()) ; } }
此時能夠使用SuppressWarning這個Annotation將這種警告信息進行壓制。
註釋信息表示要強制壓制的信息,能夠經過@SuppressWarnings(「信息」)方式進行註釋,裏面的信息能夠用數組形式註釋,
例如:@SuppressWarnings({ "unchecked", "rawtypes" })。
package 類集; class Demo<T>{ private T var ; public T getVar(){ return this.var ; } public void setVar(T var){ this.var = var ; } }; public class GetInterfaceDemo { @SuppressWarnings({ "unchecked", "rawtypes" }) public static void main(String args[]){ Demo d = new Demo() ; d.setVar("小華") ; System.out.println("內容:" + d.getVar()) ; } }
經過Deprressed進行強制警告,經過SuppressWarning進行壓制警告
package 類集; @Deprecated class Demo<T>{ private T var ; public T getVar(){ return this.var ; } public void setVar(T var){ this.var = var ; } }; public class GetInterfaceDemo { @SuppressWarnings({"unchecked","deprecation"}) public static void main(String args[]){ Demo d = new Demo() ; d.setVar("小華") ; System.out.println("內容:" + d.getVar()) ; } }
@SuppressWarning中的關鍵字。
經過剛纔發現Suppresswarning註釋發現,裏面是使用value字符串數組接收的,因此在傳入註釋參數的時候也能夠明確指出要傳給哪一個變量。
package 類集; @Deprecated class Demo<T>{ private T var ; public T getVar(){ return this.var ; } public void setVar(T var){ this.var = var ; } }; public class GetInterfaceDemo { @SuppressWarnings(value={"unchecked","deprecation"}) public static void main(String args[]){ Demo d = new Demo() ; d.setVar("李興華") ; System.out.println("內容:" + d.getVar()) ; } }