自定义注解随笔

目前java开发已经趋向于使用注解开发,包括我们最熟悉的框架spring,已经从xml过度到了annotation,而现在最流行的微服务springcloud是基于springboot开发的一套微服务解决方案。其中的springboot的配置文件已经不复存在,而是使用配置类,配置类中使用了大量的annotation。可见annotation在开发中的重要性!

创建自定义注解

要创建一个自定义注解,是十分简单的,类似于我们之前写的接口。只是在接口中添加一个@字符,就可以创建一个注解类。

@Retention(RetentionPolicy.RUNTIME) //声明周期,运行时期也有注解 。参数说明:1、source:源码时期,仅仅保留在源码阶段。2、class:Class阶段,即保留到java编译器将源代码解析为.class阶段3、Runtime:jvm将Class字节码加载到内存阶段,即反射阶段可以使用
@Target(ElementType.TYPE)  //作用在某个类中。说明:java中class 可以看成某个类,interface可以看成某个类,Enum可以看成某个类,@interface可以看成某个类
public @interface MyAnnotation {

}
注意:
  • 我们创建的自定义注解,就跟我们创建一个Class一样,因此可以把它理解为一种类,java的的类使用Type,它可以表示Class,Annotation,Enum,interface。
  • @Retention(RetentionPolicy.RUNTIME) 表示的是这个注解的声明周期,一个注解对象的生命周期有三种类型SOURCE,CLASS,RUNTIME,其中souce表示注解的的生命周期为源码阶段,class表示注解的生命周期为jvm把源代码编译成.class阶段,runtime表示注解的生命周期为jvm把.class文件加载到内存中(要使用反射,需要将注解的生命周期声明为runtime)
  • @Target(ElementType.TYPE) 表示的是注解作用的范围,比如作用在字段Field,Class,注解,方法等

使用自定义的注解

因为我们的自定义注解的作用范围是Type,表示可以作用在类上。
package com.cony.annotation.demo01;
/**
 * @author Kang
 * @date  2018年4月20日 上午8:46:58 
 * @desciption: 
 */
@MyAnnotation
public class Person {
    private String userName;
    private Integer age;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

}

简单的测试

package com.cony.annotation.demo01;
/**
 * @author Kang
 * @date  2018年4月20日 上午8:49:56 
 * @desciption: 
 */
public class PersonTest {
    public static void main(String[] args) {
        Person person=new Person();
        if(person.getClass().isAnnotationPresent(MyAnnotation.class)){//当调用getClass()的时候jvm会把.class字节码加载到内存中,而MyAcnnotation的生命周期是runtime,所以这里为true
            MyAnnotation annotation = person.getClass().getAnnotation(MyAnnotation.class);
            System.out.println(annotation);
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值