了解注解@Annotation

在不了解一个内容之前,先跟着教程动起来,再深究其原理。

  • 元注解:用于修饰注解的注解,通常用在注解的定义上
    @Target:注解的作用目标
    @Retention:注解的生命周期
    @Documented:注解是否应当被包含在 JavaDoc 文档中
    @Inherited:是否允许子类继承该注解
    *还有一些未列出

  • 常用的预置注解
    @Deprecated
    @Override
    @SuppressWarnings

  • 注解的属性:也叫注解的成员变量,以无参方法的形式来声明,方法名定义了成员变量的名字,返回值定义了变量类型。注解只有成员变量没有方法。

定义

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Person {
    String name();
}

使用(多个参数使用","隔开,单个成员变量时可以省略参数名,没有成员变量的时候可以省略括号)

@Person(name="Jonathon")
public class Test {
}

增加默认值(有默认值的情况下使用时可以不对参数进行赋值)

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Person {
    String name() default "NoName";
}

可以通过反射拿到注解对象并且调用属性方法,前提是@Retention(RetentionPolicy.RUNTIME)

  • 注解具体能干啥
    提供信息给编译器: 编译器可以利用注解来探测错误和警告信息
    编译阶段时的处理: 软件工具可以用来利用注解信息来生成代码、Html文档或者做其它相应处理。
    运行时的处理: 某些注解可以在程序运行的时候接受代码的提取
    来自秒懂,Java 注解 (Annotation)你可以这样学
    也就是说除了注解,如果配合额外的逻辑代码能够完成更多编译前的特殊的工作。
    就如Android开发中常用的Dagger2、ButterKnife
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容