跟王老师学注解(二):注解的分类及内建注解

主讲教师:王少华   QQ群号:483773664

一、注解的分类

在Java中,根据注解的使用方法和用途,可将注解分成3类,分别是

内建注解(也称为基本注解),定义于java.lang包下

元注解(Meta Annotation)

自定义注解

二、内建注解

(一)分类

在JDK5.0及以上的版本的java.lang包下提供了3种标准的注解类型,分别是

@Override:

@Deprecated

@SuppressWarnings

跟王老师学注解(二)注解的分类及内建注解_第1张图片

(二)@Override

@Override被用作标方法,它说明了被标的方法重写了父类的方法。

1、它的使用方法很简单,只要在重写的子类方法前加上@Override即可,如下代码所示

1
2
3
4
5
public class Fruit {
     public void getObjectInfo(){
         System.out.println( "水果的getObjectInfo方法" );
     }
}
1
2
3
4
5
6
public class Apple extends Fruit {
     @Override
     public void getObjectInfo() {
         System.out.println( "苹果重写水果的getObjectInfo方法" );
     }
}

2、如果不是重写父类的方法,而使用了@Override注解,会在编译报错


因此@Override经常用于防止重写父类方法时方法名拼写错误,

3、另外,特别注意,@Override只能用于修饰方法,而不能用于修饰其他程序元素!


(三)@Deprecated注解

用于表示某个程序元素(类、方法、成员变量等)已过时,编译器将不再喜欢使用这个被标的程序元素。

如果使用(无论是当前类还是其他包下的类使用),编译则会在该程序元素上画一条斜线,表示程序元素已过时。

跟王老师学注解(二)注解的分类及内建注解_第2张图片

(四)、@SuppressWarning注解

1、@SuppressWarning注解

@SuppressWarnings注解表示阻止编译器警告,被用于有选择地关闭编译器对类、方法和成员变量等程序元素及其子元素的警告。

@SuppressWarnings会一直作用于该程序元素的所有子元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@SuppressWarnings ({ "unchecked" , "rawtypes" })
public class Apple extends Fruit {
     
     @Override
     public void getObjectInfo() {
         System.out.println( "苹果重写水果的getObjectInfo方法" );
     }
     
     public void printObject(){
         Apple apple = new Apple();
         List list = new ArrayList();
         list.add(apple);
     }
}

@SuppressWarnings("unchecked")注解来标识Apple类取消类型检查编译器警告

rawtypes:是eclipse 3.6自带的注解,传参时也要传递带泛型的参数

2、当@SuppressWarnings后面的括号中的value值为如下参数时,编译器将取消相应的警告

deprecation:编译器将取消使用了过时程序元素的警告

unchecked:取消执行了未检查的转换

unused:取消某程序元素未被使用的警告

fallthrough: 取消当swithc 程序块直接通往下一种情况而没有break时的警告

path: 取消在类路径、源文件路径等中有不存在的路径时的警告

serial :取消当在序列化的类上缺少serialVersionUID定义时的警告

finally :取消当有finally子句不能正常完成时的警告

all: 取消所有情况的警告

3、使用@SuppressWarnings的参数

当注解类型里只有一个value成员变量,使用该注解时可以直接在注解后的括号中指定value成员变量的值,而无须使用name=value结构对的形式。


当注解类型里有多个value成员变量,可以使用大括号

1
2
3
4
@SuppressWarnings ({ "serial" , "unchecked" })
public class Apple extends Fruit implements Serializable{
...
}

三、注解的语法

使用注解时要在其前面加一个“@”符号,同时将注解作为修饰符使用。

1
@+AnnotationName+(..逗号分割的多个name..)

其中value值必须为编译时常量、内嵌的Annotation或数组。如果注解类型定义了某个NAME的默认值,则这个结构对参数可以被省略。

(一)不带参数的注解

1
2
3
4
@Override
public void getObjectInfo() {
     System.out.println( "苹果重写水果的getObjectInfo方法" );
}

(二)带一个参数的注解

1
2
3
4
5
6
@SuppressWarnings (value= "unused" )
public static void main(String[] args) {
     Apple apple = new Apple();
     apple.printObject();
     List apples;
}

(三)带多个参数的注解

1
2
3
@SuppressWarnings ({ "serial" , "unchecked" })
public class Apple extends Fruit implements Serializable{
}













来自为知笔记(Wiz)