Java中的注解

Java中的注解

三种注解

@Override

限定于某个某个方法,重写父类的方法,该注解只能用于方法

1
2
3
4
@Override
public String toString(){
return season+characteristic;
}

源码,下面的并非一个接口,而是一个注解类,是jdk1.5之后添加的

1
2
3
4
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

@Deprecated

用于表示某个方法已经过时,但是过时并不是表示不可以使用,这个注解可以做到新旧版本的过度。

1
2
3
4
@Deprecated
public void say(){

}

@SuppressWarning

抑制编译器警告

可以使用该注解,取消编译器对这个的警告,例如下面的方法中,就可以抑制所有的警告all,当然我们也可以精确的仅仅抑制某个警告,比如使用unused去抑制编译器对我们从没有使用的一个属性的警告。而我们使用的SuppressWarnings范围囊括这一个方法或者类,如果在main方法前使用,则我们可以抑制main方法的警告,而不妨碍别的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package Learn;
public class Test {
public static void main(String[] args) {
System.out.println(Season.SPRING.toString());
System.out.println(Season.SUMMER.toString());
System.out.println(Season.AUTUMN.toString());
System.out.println(Season.WINTER.toString());
System.out.println(Season.SPRING.name());
System.out.println(Season.SPRING.hashCode());
//输出相应的编号,编号从0开始
System.out.println(Season.SPRING.ordinal());
Season []values=Season.values();
for (Season A :values){
System.out.println(A);
}
System.out.println(Season.valueOf("SPRING"));
//System.out.println(Season.valueOf("dj"));
System.out.println(Season.SPRING.compareTo(Season.AUTUMN));

}
}
@SuppressWarnings("all")
enum Season{
SPRING("春天","温暖"),
SUMMER ("夏天","炎热"),
AUTUMN ("秋天","凉爽"),
WINTER ("冬天","寒冷"),
OTHER;
private String season, characteristic;
/**将构造其私有化,防止在main方法中直接new对象*/
private Season(){}
private Season(String season,String characteristic){
this.season=season;
this.characteristic=characteristic;
}


@Override
public String toString(){
return season+characteristic;
}
@Deprecated
public void say(){

}

}

四种元注解

  1. Retntion(保留)指定注解的作用范围,三种source,class,runtime
  2. Target 指定注解可以在那些地方使用
  3. Documented指定该注解是否会在Javadoc中体现在页面中
  4. Inherited 子类会继承父类注解

比如下面的类Target表示在方法中使用,而Retenttion表示在源文件中保留注释

1
2
3
4
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}