自定义Annotation

2019-08-16 10:56:38来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

自定义Annotation

 

除了使用系统提供的Annotation之外,又留给开发者自定义Annotation的支持,此时就需要明确的指定Annotation的操作范围,本课程主要讲解Annotation的定义,以及结合反射获取信息处理。

范例1:自定义Annotation

package com.customAnnotation.demo;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;

@Retention(RetentionPolicy.RUNTIME)        //定义Annotation运行策略
@interface DefaultAnnotation{            //自定义的Annotation
    public String title();                //获取数据
    public String url() default "www.mldn.com";        //获取数据,默认值
}
class Message{
    @DefaultAnnotation(title = "MLDN")
    public void send(String msg) {
        System.out.println("【消息发送】" + msg);
    }
}

public class CustomAnnotation{
    public static void main(String[] args) throws Exception{
        Method method = Message.class.getMethod("send", String.class); //获取指定方法
        DefaultAnnotation anno = method.getAnnotation(DefaultAnnotation.class);//获取指定的Annotation
        String msg = anno.title() + "(" + anno.url() + ")";//消息内容
        method.invoke(Message.class.getDeclaredConstructor().newInstance(), msg);
    }
}

运行结果:

【消息发送】MLDN(www.mldn.com)

 

范例2:自定义Annotation

package com.customAnnotation.demo;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;

@Target({ElementType.TYPE, ElementType.METHOD})// 此Annotation只能用在类和方法上
@Retention(RetentionPolicy.RUNTIME)//定义Annotation的运行策略
@interface DefaultAnnotation{//自定义Annotation
    public String title();//获取数据
    public String url() default "www.sohu.com";//获取数据,提供默认值
}
class Message{
    @DefaultAnnotation(title = "搜狐")
    public void send(String msg) {
        System.out.println("【消息发送】" + msg);
    }
}
public class CustomAnnotation {
    public static void main(String[] args) throws Exception {
        Method method = Message.class.getMethod("send", String.class);
        DefaultAnnotation ca = method.getAnnotation(DefaultAnnotation.class);
        String msg = ca.title() + "(" + ca.url() + ")";
        method.invoke(Message.class.getDeclaredConstructor().newInstance(), msg);
    }
}

运行结果:

【消息发送】搜狐(www.sohu.com)

 


原文链接:https://www.cnblogs.com/sunzhongyu008/p/11226332.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Mybatis-Plus myBatis的增强工具

下一篇:java.lang.IllegalArgumentException: java.util.zip.ZipExcepti