Java自定义注解

一、注解:

我们可以通过定义注解,使用注解来方便地调用某些数据。

二、java内建注解:

比如@override、@deprecated等,重写方法时会使用@override,而当某些类或方法已经被摒弃时则会出现 @deprecated

三、元注解:

元注解的作用就是负责注解其他注解。

包括@Target、@Inherited、@Retention、@Documented

@Target:表明Annotation的使用范围,包括类、方法、属性等
@Inherited:表明父类的注解可以被子类继承
@Retention:指定Annation的存在范围
@Documented:在生成java doc时可以写入文档说明

其中,Target范围如下:

而Retention范围如下:

 

四、自定义Annotation
Annotation用@interface来定义.
格式如下:

public @interface Annotation  名称{
    修饰符  数据类型 变量名称();
}

也可以在定义时直接用default指定默认值。

 

五、解析Annotation

而想取得Annotation的值,需要使用反射机制。

解析Annotation的相关api如下所示:

示例如下:

MyAnnotation.java :

复制代码
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Inherited
@Retention(value = RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.TYPE})    //表示该注解,既可以用到字段上,也可以用到类上面。 @Documented
public @interface MyAnnotation { public String name(); public String job() default "programer"; }
复制代码

Person.java :

@MyAnnotation(name = "lin")
public class Person {
  //getter 、 setter }

AnnotationTest.java :

复制代码
/**
    通过反射获取Annotations的值
 */
public class AnnotationTest {
    public static void main(String[] args) throws Exception {
        Class<?> personClass=Person.class;
     //判断Person类上面,有没有MyAnnotation.class这个注解
        if(personClass.isAnnotationPresent(MyAnnotation.class)) {
       //获取注解
            MyAnnotation annotation=personClass.getAnnotation(MyAnnotation.class);
            String name=annotation.name();
            String job=annotation.job();
            System.out.println("name:"+name);
            System.out.println("job:"+job);
        } } }
复制代码

 

参考资料:

《java开发实战经典》

posted on   乐之者v  阅读(290)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示