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()) ;
    }
}
 
相关文章
相关标签/搜索