介绍
本篇文章给大家分享的是有关Android AOP中注解处理解释器的作用有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强>一、提取注释信息强>
当开发者使用了注释修饰了类,方法,领域等成员之后,这些注释不会自己生效,必须由开发者提供相应的代码来提取并处理注释信息。这些处理提取和处理注释的代码统称为APT(注释处理工具)。
JDK主要提供了两个类,来完成注释的提取:
- <李>
Java.lang.annotation.Annotation接口:这个接口是所有注释类型的父接口。
李> <李>java.lang.reflect.AnnotatedElement接口:该接口代表程序中可以被注解的程序元素。
李>1.1注释接口
这个接口比较少用,这个接口里面有四个方法:
package java.lang.annotation; public interface  Annotation { ,boolean =(Object obj); ,int hashCode (); ,String toString (); ,//返回该注解的类,元素使用了多个注解的时候,可以进行输出判断 ,Class<? extends Annotation>, annotationType (); }
1.2 AnnotatedElement接口
该接口最常用的方法是isAnnotationPresent (), getAnnotation(类annotationClass):
package 数组; import java.lang.annotation.Annotation; public interface  AnnotatedElement { ,//判断此元素上是否存在指定类型的注解,如果存在则返回真,否则返回错误的 ,default boolean  isAnnotationPresent (Class<?, extends Annotation>, annotationClass), { ,,return getAnnotation (annotationClass), !=,空; ,} ,//返回此元素上存在的指定类型的注解,如果该类型的注解不存在,则返回零 ,& lt; T  extends Annotation>, T getAnnotation (Class, Annotation getDeclaredAnnotation (Class , T [], getDeclaredAnnotationsByType (Class , T [], getAnnotationsByType (Class <强>二、栗子一个强>
简单获取方法
2.1定义注解MyTag
@Target (ElementType.METHOD),//修饰方法 @Retention (RetentionPolicy.RUNTIME),//运行时可以获取 public @interface  MyTag { }2.2定义解析器
public class MyTagParser { ,public static  void 过程(Object clazz), { try {才能 ,,for (Method Method : clazz.getClass () .getMethods ()), { ,,,if (method.isAnnotationPresent (MyTag.class)), { ,,,,//获取到了,输出 ,,,,Log.e (“tag",“被mytag注解修饰的方法:“,+,method.getName ()); ,,,},{else ,,,,Log.e (“tag",“没有被mytag注解修饰的方法:“,+,method.getName ()); ,,,} ,,} ,,},catch (Exception en), { ,,en.printStackTrace (); ,,} ,} }2.3启动活动
public class MainActivity extends 活动{ ,@Override ,protected void  onCreate (Bundle savedInstanceState), { super.onCreate才能(savedInstanceState); ,,setContentView (R.layout.activity_main);//调才能用解析器 MyTagParser.process才能(这个); ,} ,@MyTag ,public void 暴躁的(){ ,} ,public void  testNo () { ,} }2.4结果
运行就会看到输出,表示已经获取到了对应的实例
…… 02-18 15:23:41.622 12446 - 12446/?, E/标签:,没有被mytag注解修饰的方法:stopServiceAsUser 02-18 15:23:41.622 12446 - 12446/?, E/标签:,没有被mytag注解修饰的方法:takeKeyEvents 02-18 15:23:41.622 12446 - 12446/?, E/标签:,没有被mytag注解修饰的方法:testNo 02-18 15:23:41.622 12446 - 12446/?, E/标签:,被mytag注解修饰的方法:暴躁的 02-18 15:23:41.632 12446 - 12446/?, E/标签:,没有被mytag注解修饰的方法:toString 02-18 15:23:41.632 12446 - 12446/?, E/标签:,没有被mytag注解修饰的方法:triggerSearch 02-18 15:23:41.632 12446 - 12446/?, E/标签:,没有被mytag注解修饰的方法:unbindService .......Android AOP中注解处理解释器的作用有哪些