目标
熟悉注解的基本使用方法.
本文以替代activity中setContentView函数为例.
主要代码
- 定义注解
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS)
annotation class ContentView(val value: Int = 0)
- 增加注解处理类
object InjectionUtil {
fun setContentViewFor(obj: Any) {
if (obj is Activity) {
val contentResId = obj.javaClass.getAnnotation(ContentView::class.java)?.value
if (contentResId != null && contentResId != 0) {
obj.setContentView(contentResId)
}
}
}
}
- 使用注解
open class BaseActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
InjectionUtil.setContentViewFor(this)
}
}
@ContentView(value = R.layout.activity_main)
class MainActivity : BaseActivity()
网友评论