在我的上一篇文章中,绝对不容错过,ButterKnife使用详谈中,讲解了对ButterKnife的使用。这篇文章将接着一篇文章使用之后,对ButterKnife的工作流程进行概要分析。这里Butterknife分析来自参考自链接How ButterKnife actually works?,并作出部分修改。这里做一个整理和学习。
考虑到ButterKnife的入口使用java注解,比如。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class ExampleActivity extends Activity { @Bind(R.id.user) EditText username; @Bind(R.id.pass) EditText password; @OnClick(R.id.submit) void submit() { // TODO call server… } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this); // TODO Use fields… } } |
首先这里会对java注解(java annotation)分析,然后面接上Butterknife的工作流程。
1 什么是java注解?
在java语法中,使用@符号作为开头,并在@后面紧跟注解名。被运用于类,接口,方法和字段之上,例如:
1 2 3 4 |
@Override void myMethod() { ...... } |
这其中@Override就是注解。这个注解的作用也就是告诉编译器,myMethod()方法覆写了父类中的myMethod()方法。
2 java中内置的注解
java中有三个内置的注解:
1 2 3 |
@Override,表示当前的方法定义将覆盖超类中的方法,如果出现错误,编译器就会报错。 @Deprecated:如果使用此注解,编译器会出现警告信息。 @SuppressWarnings:忽略编译器的警告信息。 |
2.1 @Override 注解
当我们的子类覆写父类中的方法的时候,我们使用这个注解,这一定程度的提高了程序的可读性也避免了维护中的一些问题,比如说,当修改父类方法签名(方法名和参数)的时候,你有很多个子类方法签名也必须修改,否则编译器就会报错,当你的类越来越多的时候,那么这个注解确实会帮上你的忙。如果你没有使用这个注解,那么你就很难追踪到这个问题。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class MyParentClass { public void justaMethod() { System.out.println("Parent class method"); } } public class MyChildClass extends MyParentClass { @Override public void justaMethod() { System.out.println("Child class method"); } } |
2.2 @Deprecated注解
一个弃用的元素(类,方法和字段)在java中表示不再重要,它表示了该元素将会被取代或者在将来被删除。
当我们弃用(deprecate)某些元素的时候我们使用这个注解。所以当程序使用该弃用的元素的时候编译器会弹出警告。当然我们也需要在注释中使用@deprecated标签来标示该注解元素。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
class DeprecatedDemo { /* @deprecated This field is replaced by * MAX_NUM field */ @Deprecated int num=10; final int MAX_NUM=10; /* @deprecated As of release 1.5, replaced * by myMsg2(String msg, String msg2) */ @Deprecated public void myMsg(){ System.out.println("This method is marked as deprecated"); } public void myMsg2(String msg, String msg2){ System.out.println(msg+msg2ass="crayon-sy">{ System.out.println(msg+msg2后,对ButterKnife的工作流程进行概要分析。这里Butterknife分析来自参考自链接How ButterKnife actually works?,并作出部分修改。这里做一个整理和学习。 考虑到ButterKnife的入口使用java注解,比如。
首先这里会对java注解(java annotation)分析,然后面接上Butterknife的工作流程。 1 什么是java注解?在java语法中,使用@符号作为开头,并在@后面紧跟注解名。被运用于类,接口,方法和字段之上,例如:
这其中@Override就是注解。这个注解的作用也就是告诉编译器,myMethod()方法覆写了父类中的myMethod()方法。 2 java中内置的注解java中有三个内置的注解:
2.1 @Override 注解当我们的子类覆写父类中的方法的时候,我们使用这个注解,这一定程度的提高了程序的可读性也避免了维护中的一些问题,比如说,当修改父类方法签名(方法名和参数)的时候,你有很多个子类方法签名也必须修改,否则编译器就会报错,当你的类越来越多的时候,那么这个注解确实会帮上你的忙。如果你没有使用这个注解,那么你就很难追踪到这个问题。
2.2 @Deprecated注解一个弃用的元素(类,方法和字段)在java中表示不再重要,它表示了该元素将会被取代或者在将来被删除。
|