Java注解

1.什么是java注解?
是附加在代码中的一些信息,可以认为是代码的一个标记,主要完成说明、配置的功能。

2.为什么要有java注解?
为了编程更简洁,使用注解,可以省去很多配置文件或者是代码;例如,对某个类的某种标记,如果没有注解,意味着可能要通过方法或者是配置文件来完成。

3.java注解的语法
定义注解:
import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface UseCases {
    public int value() default 0;
    public int id() default 0;
    public String description() default "no description";
}


@interface表示是一个注解,可以被public、final修饰;同时,通过以下三个注解来修饰注解:

@Target(value={ANNOTATION_TYPE})
表示该注解作用的目标,取值有TYPE(表示是class、interface、annotation、enum的注解),FIELD(表示是属性的注解)、METHOD(表示是方法的注解)、PARAMETER(表示是参数的注解)、CONSTRUCTOR(表示是构造函数的注解)、LOCAL_VARIABLE(表示是本地变量的注解)、ANNOTATION_TYPE(表示是注解的注解)、PACKAGE(表示是包的注解)

@Retention(value=RUNTIME)
注解的生命周期时间,SOURCE(仅在源代码时有效,例如override注解),CLASS(编译时有效,会被编译器解析,但是在运行时无效),RUNTIME(编译器和JVM同时都能识别该注解)

@Documented
表明该注解是否会被包含在javadoc中

@Inherited
表明运行子类继承父类的注解

注解的方法,其实是其属性。方法名是属性的名称,方法的返回值类型是属性的数值类型,default是默认值

使用注解:
@UserCase(id=10, description="my desccription")


获取注解:
主要依靠java的反射机制来实现:
获取类的注解
Person.class.getAnnotation(annotationClass)
获取方法的注解
Person.class.getMethods()[0].getAnnotations()
获取字段的注解
obj.getClass().getDeclaredFields()[0].getAnnotations()
获取参数的注解
obj.getClass().getMethods()[0].getParameterAnnotations()

4.注解有哪些种类
1)标记注解:注解内部没有属性
2)单值注解:只有一个属性,如果属性名是value,则可以默认只写属性值
@name(value="abc")  //也可以写成@name("abc")
3)多值注解:多个属性值

你可能感兴趣的:(java)