注解

作者: 小虫虫奇遇记 | 来源:发表于2020-11-14 19:05 被阅读0次

    分类

    • 标准注解
      @override,@SupressWarning这类java自带注解,编译器识别,不会进行编译,也不会编译到.class文件
    • 元注解
      @Retention, @Target, @Inherited, @Documented,它们是用来定义 Annotation 的 Annotation。
      @Retention - 标识这个注解怎么保存,是只在源码中,还是编在class文件中,或者是在运行时可以通过反射访问。
      @Retention(RetentionPolicy.SOURCE)
      源码时注解,一般用来作为编译器标记。如Override, Deprecated, SuppressWarnings。
      @Retention(RetentionPolicy.RUNTIME)
      运行时注解,在运行时通过反射去识别的注解。
      @Retention(RetentionPolicy.CLASS)
      编译时注解,在编译时被识别并处理的注解,这是本章重点。
    • 自定义注解

    注解声明
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.TYPE})
    public @interface ContentView {
    int value();
    }
    //注解使用
    @ContentView(R.layout.activity_home)
    public class HomeActivity extends BaseActivity {
    。。。
    }
    //注解解析
    for (Class c = this.getClass(); c != Context.class; c = c.getSuperclass()) {
    ContentView annotation = (ContentView) c.getAnnotation(ContentView.class);
    if (annotation != null) {
    try {
    this.setContentView(annotation.value());
    } catch (RuntimeException e) {
    e.printStackTrace();
    }
    return;
    }

    相关文章

      网友评论

          本文标题:注解

          本文链接:https://www.haomeiwen.com/subject/ehmwbktx.html