注解

作者: 阿蕊儿 | 来源:发表于2017-12-20 09:29 被阅读2次

参考资料:
http://www.jianshu.com/p/dce26aa75060
http://www.jianshu.com/p/2a0f883b5aed
http://blog.csdn.net/asialiyazhou/article/details/53055460
http://www.jianshu.com/p/9e34defcb76f
http://www.jianshu.com/p/745655cb431a
注解分为两类:编译时注解和运行时注解。

运行时注解

通常采用反射来实现,由于注解在运行时进行会影响效率

1.注册注解类

@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ViewInject{ int value(); }

2.通过反射获取注解值

public class AnnotateUtils { public static void injectViews(Activity activity) { Class<? extends Activity> object = activity.getClass(); // 获取activity的Class Field[] fields = object.getDeclaredFields(); // 通过Class获取activity的所有字段 for (Field field : fields) { // 遍历所有字段 // 获取字段的注解,如果没有ViewInject注解,则返回null // if (field.isAnnotationPresent(InjectView.class)) {} ViewInject viewInject = field.getAnnotation(ViewInject.class); if (viewInject != null) { // 获取字段注解的参数,这就是我们传进去控件Id int viewId = viewInject.value(); if (viewId != -1) { try { // 获取类中的findViewById方法,参数为int Method method = object.getMethod("findViewById", int.class); // 执行该方法,返回一个Object类型的View实例 Object resView = method.invoke(activity, viewId); field.setAccessible(true); // 把字段的值设置为该View的实例 field.set(activity, resView); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } } } } }

3.使用注解

`
@ViewInject(R.id.buy)
private Button buy;
@ViewInject(R.id.money)
private TextView money;
@ViewInject(R.id.tv_power)
private TextView power;
@ViewInject(R.id.tv_life)
private TextView life;
@ViewInject(R.id.tv_dex)
private TextView dex;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AnnotateUtils.injectViews(this);
}
`

编译时注解

编译时注解采用apt+

相关文章

  • 注解学习笔记

    什么是注解注解分类注解作用分类 元注解 Java内置注解 自定义注解自定义注解实现及使用编译时注解注解处理器注解处...

  • 注解与反射

    注解 声明一个注解类型 元注解 在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

  • 注解的使用

    元注解 注解 注解本质就是接口: 元注解:修饰注解的注解 自定义注解 Text.java FruitName.ja...

  • 注解

    Java注解 注解 元注解 自定义注解 元注解:负责注解其他注解 共有4个标准的meta-annotation类型...

  • Spring高级应用之组合注解和元注解

    1.核心概念: 元注解:可以注解在其他注解上的注解;被注解的注解成为组合注解; 2.组合注解的定义步骤 定义组合注...

  • 2016.10.13-关于注解的自定义和注解的解析

    注解可以分为:1、标识性注解(没有成员变量) 2、注解 3、元注解(注解的注解) 1、注解的自定义 自定义注解的格...

  • 自定义注解

    注解分类 1、代码注解2、编译时注解3、运行时注解 注解范例 使用注解的类 注解解析类 注解实战 需求1、有一张用...

  • 【JAVA】注解

    元注解 用来定义、声明注解的注解。 @Inherited注解 使用此注解声明出来的自定义注解,在使用此自定义注解时...

  • Spring Boot常用注解

    注解速览 配置加载相关 Bean 声明注解 Bean 注入注解 SpringMVC 注解 MyBatis 注解 配...

网友评论

      本文标题:注解

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