文件名称:java8源码-ButterKnife:仿ButterKnife,小Demo,仅供学习参考用
文件大小:154KB
文件格式:ZIP
更新时间:2024-06-24 14:06:44
系统开源
java8 源码 前言 目前Android社区涌现出越来越多的IOC框架,ButterKnife、Dagger2、EventBus3,这些框架往往能有效帮助我们简化代码,模块解耦,相信很多人也或多或少的用过其中一些框架。但是,有没有人想过这些框架的内部原理都是怎么样的呢?本文就从ButterKnife入手,手把手教你实现一个仿ButterKnife的IOC框架 知识准备 Annotation 我们知道annotation有三个保留级别 RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。 RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。 RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们 annotation实际上就是一个标签,单独存在的时候没有任何实际意义。为了便于理解,这里再延伸一下另一个词语—Hook,Hook的英文解释是钩子。依我的理解,注解实际上就像这个钩子,勾住”类“、”方法“、”字
【文件预览】:
ButterKnife-master
----processor()
--------src()
--------.gitignore(7B)
--------build.gradle(258B)
----gradlew.bat(2KB)
----gradlew(5KB)
----gradle.properties(728B)
----annotation()
--------src()
--------build.gradle(161B)
----app()
--------proguard-rules.pro(751B)
--------src()
--------.gitignore(7B)
--------build.gradle(1KB)
----gradle()
--------wrapper()
----.idea()
--------codeStyles()
--------gradle.xml(848B)
--------runConfigurations.xml(564B)
--------misc.xml(751B)
--------vcs.xml(180B)
--------dictionaries()
----butterknife()
--------proguard-rules.pro(751B)
--------src()
--------.gitignore(7B)
--------build.gradle(808B)
----.gitignore(208B)
----README.md(18KB)
----settings.gradle(60B)
----build.gradle(534B)