Java中自定义注解的正确打开方式

在java中,我们在使用的过程中,常常能够用到注解,例如:

@Override
@FunctionalInterface(0
@SuppressWarnings

这些注解的作用就是为了注释说明 ,这也包含一些可以加在其他注解上的注解 ,这些我们就称为元注解:
元注解名说明
@Target指定了注解能在哪里使用
@Retention保留时间(生命周期)
@Inherited表示修饰的自定义注解可以被子类继承
@Documented表示该自定义注解,会出现在API文档里面
下面我们来具体的看一下每个元注解的具体的参数

@Target

  • ElementType.FIELD:成员变量
  • ElementType.TYPE,类
  • ElementType.METHOD,方法
  • ElementType.PARMETER,用来 描述参数
    @Retention
  • RententionPolicy.RUNTIME(常用):运行阶段
  • RententionPolicy.CLASS:编译阶段
  • RententionPolicy.SOURCE:源码阶段
下面开始正题:
1.首先先定义一个注解,用元注解来约束
//作用范围为类上
@Target(ElementType.TYPE)
//生命周期是在运行期间
@Retention(RetentionPolicy.RUNTIME)
public @interface ContentPath2 {
    //相当于抽象方法用来约束
    public String path();
    public String value();
}
然后定义一个类,用刚写好的注解来约束,使用户只关注参数,而不用再关注具体的实现,从而达到了简化开发!
//文件输出的路径与文件名,还有输出的文件中的内容是什么
@ContentPath2(path = "C:\\Users\\单少宝宝\\Desktop\\a.txt",value = "我一个新文档")
public class WriterContent {

} 
最后这个就是用反射合拿到指定类是否有ContentPath2这个注解的修饰,若有就拿到对就的path与value,用流写入到指定文件中就可以了!这一步一般由框架的开发人员开发好了,只留出接口,让程序员进行二次开发!提高开发的速度!
 public class WriterUtil2 {
    public static void main(String[] args) throws Exception {
        Class<?> clazz = Class.forName("com.test.demo.WriterContent");
		
		//当前的class类文件中是否包含COntentPath2这个类
        if (clazz.isAnnotationPresent(ContentPath2.class)){

            ContentPath2 annotation = clazz.getAnnotation(ContentPath2.class);
            String path = annotation.path();
            String value = annotation.value();

            FileWriter fw = new FileWriter(new File(path));
            fw.write(value);
            fw.close();
        }
    }
}

总结 :
这样我们就实现了自定义注解 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值