注解到ButterKnife的实现

理解注解前先了解几个概念
枚举:https://blog.csdn.net/moakun/article/details/80554066

注解的概念

注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Metadata很容易的就能够调用Annotations。注解与类、接口、枚举在同一个层次,并可以应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中,用来对这些元素进行说明注释。
参考:https://blog.csdn.net/github_35180164/article/details/52107204

看完之后,理解

@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.ANNOTATION_TYPE } )
public @interface Target {
    ElementType[] value();
}

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();
}

ButterKnife的实现

两个jar包

    implementation 'com.jakewharton:butterknife:10.1.0'
    implementation 'com.jakewharton:butterknife-compiler:10.1.0'

参考:https://blog.csdn.net/github_35180164/article/details/52208691
ButterKnife的大名相信做Android开发的都应该知道,如果你还不知道那只能说明你平时都没关注过开源项目,优秀的开源项目对于开发来说帮助是巨大的,而学习优秀的开源项目对个人的提升帮助也是巨大的。ButterKnife通过注解的方式帮助我们处理诸如 findViewById()和setonclicktListener()等的重复性繁琐的工作,极大地减轻了程序员的工作量。ButterKnife的实现原理是通过定义编译时注解(RetentionPolicy.CLASS),并在注解处理器中对这些注解进行处理,最终生成 java代码,我们只要简单地调用个bind() 方法就可以完成所有工作,非常的方便。而且它用的是编译时注解,和运行时注解相比对性能的影响是很小的。

继续理解:
https://blog.csdn.net/qq_36946446/article/details/83542314

class ExampleActivity extends Activity {
  @BindView(R.id.title) TextView title;
  @BindView(R.id.subtitle) TextView subtitle;
  @BindView(R.id.footer) TextView footer;
  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.bind(this);
  }
}

等于

public void bind(ExampleActivity activity) {
  activity.subtitle = (TextView) activity.findViewById(R.id.subtitle);
  activity.footer = (TextView) activity.findViewById(R.id.footer);
  activity.title = (extView) activity.findViewById(R.id.title);
}

```jar包插入
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190412074226729.png)
自定义学习

/**

  • 编译时注解
    */
    @Retention(RetentionPolicy.CLASS)
    @Target(ElementType.TYPE)
    public @interface MyAnnotation {
    String value();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值