java annotation 学习笔记

annotation的作用是不用多说的,大家有目共睹。那么我就开始介绍其使用方式。

当前,我们先来熟悉下java的元注解。

元注解:负责注解自定义的注解的注解。java5.0定义了4个标准的元注解

@Target

@Retention

@documented

@Inherited


下面我们挨个详细介绍

@Target

@Target说明了Annotation所修饰的对象的范围:Annotation可被用于packages,types(类,接口,枚举,Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。

作用:用于描述注解的使用范围。

取值(ElementType):

CONSTRUCTOR:描述构造器

FIELD:域

LOCAL_VARIABLE:局部变量

METHOD:方法

PACKAGE:包

PARAMETER:参数

TYPE:类、接口、enum

使用实例:

@Target(ElementType.TYPE)

public @interface Table {

//数据表名称注解,默认值是类的名称

//@return

public String tableName() default "className";

}


@Target(ElementType.FIELD)

public @interface NoDBColumn {

//数据列的名称注解,默认值是属性名称

//@return

public String columnName() default "fieldName";

}


注解Table可以用于注解类、接口(包括注解类型)或者enum声明,而注解NoDBcolumn仅可用于注解类的成员变量。


@Retention:

@Retention 定义了该Annotation 被保留的时间长短:

1. 仅出现在源码中,被编译器丢弃,即在编译时就丢弃了。

2. 可以编译到class文件中,编译到class文件中的,  一种是被虚拟机忽略;一种是在装载时读取。(Annotation与class在使用时是被分离的,互不影响)。


作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期.

取值(RetentionPolicy):

SOURCE:在源文件中有效

CLASS:在 class 文件中有效

RUNTIME:在运行时有效

Retention 类型有唯一的value作为成员,它的取值来自java.lang.annotation.RetentionPolicy 的枚举类型。

具体实例:

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface Column {

public  String name() defualt "fieldName";

public String setFuncName() defualt "setField";

public String getFuncName() defualt "getField";

public boolean defualtDBValue() defualt false;

}

Column注解的RetentionPolicy属性值是RUNTIME,这样注解处理器可以通过反射,获取到该注解的属性值,从而去做运行时的逻辑处理。


@Documented是一个标记注解,没有成员。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值