注解----3
自定义注解 为注解添加属性 反射操作注解对象
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1. 自定义注解
(1). 自定义注解的格式
[1]. Java中使用“@interface”关键字来自定义注解类型
[2]. 定义格式:
public @interface注解名{…}
【注意】不能使用public interface注解名 extendsjava.lang.annotation.Annotation{…}来自定义接口。尽管所有的接口类型都是直接或者间接地实现了java.lang.annotation.Annotation这个公共接口。
@interface隐含了注解extendsjava.lang.annotation.Annotation
[3]. 注解中的成员方法也是成员变量。
{1}. 对内以成员方法的形式定义,不能抛出异常,不能有参数
【结论】注解内的成员方法一定是public abstract并且无异常,空参的方法。
示例:编译无法通过注解中含有参数的成员方法
{2}. 对外以成员变量的形式来进行访问
两者是一回事。
{3}. 以成员变量进行访问的时候,成员变量的类型就是成员方法的返回值类型
[4]. 注解中的成员方法默认是public abstract
由于注解是一种特殊的接口,并且内部使用成员方法的形式来定义,所以注解中的成员方法的默认类型就和接口中的成员方法一样,都是publicabstract。
【结果】这样由于public的成员方法,也就可以直接对这个成员方法在外部进行直接访问。由于注解的成员方法在外部以成员变量的形似被访问,所以,就表现出来直接访问这个注解的成员变量(实际为成员方法 public 可以被直接访问)
[4]. 为什么对内以成员方法的方式进行定义,对外以成员变量的形式进行访问?
【个人猜想**】
{1}. 接口中的成员变量实际上默认是public static final的,是全局常量,所以一旦接口的字节码文件被加载到内存之后,接口中的成员变量 (实际为全局常量)的值就必须固定并且被所有实现这个接口的实例