前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 给编译器看的注释--Annotation

Java 给编译器看的注释--Annotation

作者头像
Michael阿明
发布2021-09-06 10:07:51
3750
发布2021-09-06 10:07:51
举报

文章目录

将配置直接写入到程序之中:Annotation

1. 系统内建的Annotation

  • @Override@Deprecated@SuppressWarnings
代码语言:javascript
复制
class Person5 {
    public String say(){
        return "人在说话!";
    }
}

class Student5 extends Person5{
    @Override // 明确表示是覆写的函数,名称保持一致
    public String say() {
        return "学生在说话!";
    }

    @Deprecated // 不建议使用的操作,使用会出现警告
    public String getInfo(){
        return "hello";
    }
}

class test7{
    @SuppressWarnings("deprecated")//压制警告信息
    public static void main(String[] args){
        Student5 s = new Student5();
        System.out.println(s.say());
        System.out.println(s.getInfo());
    }
}

2. 自定义Annotation

  • public @interface MyAnnotation名称 { }
代码语言:javascript
复制
//自定义Annotation
public @interface MyAnnotation{
    public String key() default "Michael";
    public String value() default "Ming";
    public Color color() default Color.RED;//限定枚举的参数范围
    public String[] url();
}

@MyAnnotation(color=Color.BLUE, key="Michael", value="Ming",
                url={"https://michael.blog.csdn.net/","abc.xxx"})
class Info{

}

3. Retention

也是一个 Annotation,其取值是通过 RetentionPolicy (枚举)指定

4. 反射 与 Annotation

代码语言:javascript
复制
//自定义Annotation
@Retention(value=RetentionPolicy.RUNTIME) // 运行的时候可见
@interface MyAnnotation{
    public String key() default "Michael";
    public String value() default "Ming";
    public EnumDemo.Color color() default EnumDemo.Color.RED;//限定枚举参数范围
    public String[] url();
}

5. Target

也是一种 Annotation

代码语言:javascript
复制
@Target(value=ElementType.METHOD) // 只能在方法上使用
//@Target(value = {ElementType.METHOD, ElementType.TYPE}) // 多个选项
@Retention(value=RetentionPolicy.RUNTIME)
@interface MyAnnotation{
    public String key() default "Michael";
    public String value() default "Ming";
    public EnumDemo.Color color() default EnumDemo.Color.RED;//限定参数范围
    public String[] url();
}

6. Documented

也是一种 Annotation

代码语言:javascript
复制
@Documented

可以在使用类中加入文档注释,方便生成文档

代码语言:javascript
复制
/**
 * 文档注释
 */

7. Inherited

也是一种 Annotation,写了@Inherited的 Annotation 才能被子类继承

代码语言:javascript
复制
@Inherited
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 系统内建的Annotation
  • 2. 自定义Annotation
  • 3. Retention
  • 4. 反射 与 Annotation
  • 5. Target
  • 6. Documented
  • 7. Inherited
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档