注解

Posted xiong_hui_hui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了注解相关的知识,希望对你有一定的参考价值。

定义注解

//定义注解类型:类,属性,方法
@Target(ElementType.FIELD)
//注解可见时候,一般运行时可见
@Retention(RetentionPolicy.RUNTIME)
public @interface Id 

使用注解

public class Bean 
    @Id
    private int id;
    public int getId()        return id;   
    public void setId(int id)    this.id = id;  
   

注解定位和反射取值

public class Use
  public int a;
  public void setA(Bean bean)
  Class clazz = bean.getClass();
  Field[] fields = clazz.getDeclaredFields();
            for (Field field:fields)
                if (field.getAnnotation(Id.class) != null)
                    field.setAccessible(true);
                    a = field.getInt(bean);
                
            

ButterKnife

1.配置:

compile ‘com.jakewharton:butterknife:6.1.0’

2.绑定事件:

activity:

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo_butter_knife);
    ButterKnife.inject(this);

fragment:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) 
        View view = inflater.inflate(R.layout.fragment_simple, container, false);
        ButterKnife.inject(this, view);
        return view;
    

这个必须记得在onDestroyView中重置一下ButterKnife.reset(this);

viewHolder:

 public static class ViewHolder 
 public ViewHolder(View view) 
            ButterKnife.inject(this, view);
        
@InjectView(R.id.person_name) TextView name; @InjectView(R.id.person_age) TextView age; 

3.功能:

  1. 不用写findViewById
    id找不到时会在编译时报错,view变量声明不能为private,static
  @InjectView(R.id.butter_text_view_2) 
  TextView mTextView2;
  1. 不用写setOnClickListener
    还有ListView的@OnItemClick, CheckBox的@OnCheckedChanged等;
    方法不能为private,static;
    可绑定多个id;所以Listener参数都是optional,可写可不写;
@OnClick(R.id.button,R.id.button2)
    void finishA(View view) 
        finish();
    
  1. 组建View List
    可同时获取多个view放入list
@InjectViews(R.id.first_name, R.id.middle_name, R.id.last_name)
List nameViews; 

4.apply()方法(要用再说)

共有3种形式:即Action, Setter和Property三种

以上是关于注解的主要内容,如果未能解决你的问题,请参考以下文章

与匿名管道一起使用的Diff在放入Makefile时会出现奇怪的错误

springboot中的常用注解

使用IDEA工具整合mybatis时使用@Resource和@Autowired自动注解bean时会显示红色问题的解决办法

@ModelAttribute注解的作用

springboot 开发中将 bean 放入容器 你知道的有几种方式?

spring Required注解