现在android项目中使用注解提高开发效率的例子越来越多了,下面三个比较热门的开源库都用了注解简化代码:
Retrofit 使用Annotation实现符合 RESTful 规范的网络请求框架
Butter Knife 使用Annotation实现 View 及事件等依赖注入框架
Active Android 使用Annotation实现 ORM 框架
我在学习Annotation的过程中遇到了一些困惑,千辛万苦才搞清楚原因,就记在这里吧。
1、对AbstractProcessor的误解
当我们解析自己定义的Annotation,需要做的
a. 自定义类继承自 AbstractProcessor
b. 重写其中的 process 函数
其中AbstractProcessor是Javax包提供的抽象类,我们定义的processor由编译器自动调用,解析工作在重写的process函数中执行。在这一步我发现android sdk的Javax包并没有包含AbstractProcessor,当时百思不得其解,直到在stackoverflow找到这个提问Android Studio Annotation AbstractProcessor Not Found 。
造成困惑的原因还是对程序的编译打包理解不够透彻,因为AbstractProcessor只需要在编译时使用,而我们的应用在android系统是直接可以运行的,所以运行环境里当然不需要AbstractProcessor。
相关推荐
自定义注解可以通过`@interface`关键字来定义,可以包含元素(也称为成员),元素的值可以在使用注解时指定。例如: ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface ...
Gson 库的一大优点是它不需要在实体类上使用注解(Annotation)来标识哪些字段需要序列化,除非你想自定义序列化行为。以下是一个简单的序列化示例: ```java public class Person { private String name; ...
20. **注解(Annotation)**:了解元数据的概念,以及预定义和自定义注解的使用。 以上只是Java-J2SE学习笔记可能涵盖的部分内容,实际笔记可能还会包括更多主题,如异常处理、GUI编程、Swing组件、JDBC数据库操作...
17. **注解(Annotation)**:了解注解的使用,学习元注解和自定义注解。 18. **枚举(Enum)**:掌握枚举的定义和使用,理解其在Java中的特殊地位。 19. **Lambda表达式**:Java 8引入的新特性,用于简化函数式...
"android-plugin"指的是Android Studio中的插件开发,开发者可以创建自定义的Gradle插件,实现对项目构建过程的深度定制,如自动化的代码格式化、版本控制集成、性能分析等。 "Apt-repository"可能是指自定义的...
在build.gradle文件中添加Room的相关依赖,如`implementation 'androidx.room:room-runtime:2.x.x'` 和 `annotationProcessor 'androidx.room:room-compiler:2.x.x'`。 2. **Room组件**: Room库由三个主要部分组成...
Java编程语言是面向对象的、跨平台的编程语言,广泛应用于企业级应用开发、移动应用开发(如Android)以及各种互联网软件开发。本笔记详细总结了学习Java过程中的每章节核心知识点,旨在帮助读者巩固已学知识,...
5. **枚举与注解**:学习Java中的枚举类型,以及注解(Annotation)的应用和自定义。 6. **集合高级**:深入学习集合框架的高级特性和算法,如TreeSet、TreeMap的排序原理,以及List、Set、Map之间的关系。 这些...
- **自定义注解**:定义和使用自定义注解,处理注解信息。 14. **集合高级特性和设计模式** - **泛型**:类型安全的集合,通配符的使用。 - **Lambda表达式**:函数式编程,简化匿名内部类的代码。 - **设计...
以上只是Java编程语言的一些基础知识点,实际上,Java涵盖了广泛的领域,如企业级应用开发、Android移动开发、大数据处理(Hadoop、Spark)、Web开发(Spring Boot、Spring MVC)等,是一个强大且全面的编程平台。...
【TutoriumSmits】是一个与Java编程相关的学习资源库,可能是某个教学项目或课程的代码实例集合。...该项目可能包含示例代码、练习题、解决方案,甚至是课程笔记,对于学习和巩固Java编程技能非常有帮助。
8. **平台交互**:学习如何使用Platform Channel进行原生平台代码的调用,以利用iOS和Android的特有功能。 9. **测试**:编写单元测试和集成测试,确保代码质量,提高应用的可靠性。 10. **发布应用**:学习如何...
8. **注解(Annotation)**:元编程的概念,预定义注解的使用,自定义注解的创建与解析。 9. **泛型**:类型参数化,通配符,边界等。 10. **JavaFX或Swing**:用于创建图形用户界面(GUI)的应用程序开发。 11. ...