Annotation:系統內建Annotation

1,掌握系統內建的三個Annotation。數組

Annotation被稱爲元數據特效,也被稱爲註釋,即:使用註釋方式,加入一些程序信息。安全

Java.lang.annotation接口是全部Annotaion必須實現的接口。ide

系統已經內建的三個Annotation:this

@Override:覆寫的Annotation. @Deprecated:不同意使用的Annotation @SuppressWarning:壓制安全警告的Annotation

 

@Overrride

@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

使用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()) ;
    }
}
 

 

@SuppressWarning.

用於壓制警告信息

以以前的泛型操做爲例,在泛型中若是沒有指定泛型類型,則使用時候確定出現安全警告

正常狀況不使用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()) ;
    }
}
 
相關文章
相關標籤/搜索