java注解学习笔记

1.注解的定义:

Public @interface MyAnnotation{
//定义属性的格式
	//String[] name();
	//String value();当注解的属性只有一个且属性名字是value时,在使用这个注解的时候直接填写值不需要填写内容
		
/*允许定义的属性的类型有:byte,short,int,long,float,double,boolean,
char.String,enum以及对应的数组
注解属性是数组的时候,使用方式:
(1)@MyAnnotation("12")数组长度为一,直接写值不需要{}
(2)@MyAnnotation({"12","34"})数组长度不为一用{}
*/
]

注解可以用在变量、类、方法、属性上
2. 元注解:用来修饰注解的注解
(1)@Target: @Target修饰注解,将限制被修饰的注解可以注解的内容
定义:

public @interface Target {
    /**
     * Returns an array of the kinds of elements an annotation type
     * can be applied to.
     * @return an array of the kinds of elements an annotation type
     * can be applied to
     */
    ElementType[] value();
}

该注解的ElementType属性是枚举型的ElementType数组,ElementType枚举的内容有:
ElementType.TYTPE:类 ElementType.FIELD:属性
ElementType.METHOD:方法 ElementType.CONSTRUCTOR:构造方法
ElementType.LOCAL_VARIABLE:局部变量

@Target({ElementType.TYPE,ElementType.Method})
Public @interface MyAnnotation{
]
//这样注解的注解注解类和方法

(2)@Retention:@Target修饰注解,将决定该注解保留的类型
该注解的属性定义:

public @interface Retention {
    /**
     * Returns the retention policy.
     * @return the retention policy
     */
    RetentionPolicy value();
}

该注解的属性定义了一个RetentionPolicy 类型的value,RetentionPolicy 为枚举类型,枚举的内容有:

public enum RetentionPolicy {
    /**
     * 被修饰的注解只能存在于源文件
     */
    SOURCE,

    /**
     * 被修饰的注解将会保存在编译后的class文件中
     */
    CLASS,

    /**
     * 被修饰的注解将会保存在编译后的class文件中,可以被反射
     */
    RUNTIME
}

  1. jdk中常用的注解:@Override和@Deprecated
    (1)@Override:
@Target(ElementType.METHOD)//只能注解方法
@Retention(RetentionPolicy.SOURCE)//将只保留在源文件中
public @interface Override {
}

(2)@Deprecated:

public @interface Deprecated {

    String since() default "";

    boolean forRemoval() default false;
}

该注解存在两个属性,使用的时候编译器将会提示该方法过时

  1. 使用反射机制获取注解的属性
    (1) 调用类或者方法或者属性的getDeclaredAnnotation()、getDeclaredAnnotations()方法,返回Annotation(或者Annotation数组)
    (2)找到想要的注解:
    步骤1:调用isAnnotationPresent(注解类.class)判断注解是否存在
    步骤2:getAnnotation(注解.class)获取注解
    返回的注解.属性()获取属性值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值