java的注解

来源:互联网 发布:费斯托选型软件 编辑:程序博客网 时间:2024/06/06 17:29

一》一个注解就是一个类,用某个注解就是创建了某个注解的对象

二》作用就是传递信息给编译器或者开发工具,告诉它应该怎么做。

三》常用注解:

@Override:判断方法有没有覆盖;

@Deprecated 让某个方法过时;

@SuppressWarnings("deprecation"):某个方法过时,但还继续想用。

一》保留在那个生命周期

@Retention(RetentionPolicy.SOURCE)在源文件阶段,class阶段没有,运行没有

@Retention(RetentionPolicy.class):在class阶段,运行时没有;(默认阶段)

@Retention(RetentionPolicy.RUNTIME):保留注解类在运行阶段,

二》作用在那个成分上

//说明这个注解类只能作用在方法上;

@Target(ElementType.METHOD)

//既能作用在方法上和也能作用类上,用的是数组形式

@Target({ElementType.METHOD,ElementType.TYPE})

作用在字段上

@Target(ElementType.FIELD)

作用在形式参数上

@Target(ElementType.PARAMETER)

一》注解类很想接口

public @interface ItcastAnnotation {

//定义注解类属性

}

二》注解属性很像方法

//注解类

public @interface ItcastAnnotation {

//定义注解类属性,跟接口一样,前面省略public abstract

String color();

String value();

}

说明这个注解类有一个color属性和Value属性;

三》应用带属性的注解类,必须设置属性(以属性的方式设置);

//应用注解的类

@ItcastAnnotation(color="red",value="abc")

四》给注解类的属性设置默认值

public @interface ItcastAnnotation {

//定义注解类属性,跟接口一样,前面省略public abstract

String color() default "blue";

String value();

}

就是说color已经有默认值,可以重新设置,也可以不设置,就相当于该注解类只有一个属性需要设置就是value,所以设置value时,可以省略value名和“=”;

@ItcastAnnotation("abc")

五》如果注解类中只有一个属性需要设置值,可以省略属性名和“=

@SuppressWarnings("deprecation")

六》在应用注解类的类中获取注解类对象

ItcastAnnotation annotation = 

(ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);

七》调用注解类属性时,是以方法的形式调用;

//如果应用了某个注解类,就得到这个注解类对象

//获取注解类对象

ItcastAnnotation annotation = 

(ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);

System.out.println(annotation.color());

1.int【】数组

//int[]数组

int[] arr();

在应用类中设置int数组属性

@ItcastAnnotation(arr={1,2,3})

2.枚举属性

TrafficLamp lamp() default TrafficLamp.GREEN;

在应用类中设置属性

@ItcastAnnotation(clamp=TrafficLamp.RED)

3.注解类型的属性并缺省值

MetaAnnotationmetaAnnotation()default@MetaAnnotation(value="annotationA");

在应用类中设置属性

@ItcastAnnotation( metaAnnotation=@MetaAnnotation(value="annotationB"))