Java注解的简单使用

Java注解的简单使用

记录一下,使用注解声明变量。

1、新建注解类InjectPresenter.java

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 注解类
 * @author fht
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface InjectPresenter {
}

2、使用注解声明变量,MainPresenter继承BasePresenter

@InjectPresenter
private MainPresenter mainPresenter; 

3、通过注解获取MainPresenter声明的变量

//获得已经声明的变量,包括私有的
Field[] fields = this.getClass().getDeclaredFields();
for (Field field:fields) {
    //获取变量上面的注解类型
    InjectPresenter injectPresenter = field.getAnnotation(InjectPresenter.class);
    //有变量使用InjectPresenter注解
    if (injectPresenter != null) {
        try{
            Class<? extends BasePresenter> type = (Class<? extends BasePresenter>) field.getType();
            BasePresenter mInjectPresenter = type.newInstance();//实例化presenter
            field.setAccessible(true);
	    field.set(this,mInjectPresenter);
        }catch (IllegalAccessException | InstantiationException e) {
            e.printStackTrace();
        }catch (ClassCastException e){
            e.printStackTrace();
        }
    }
}

你可能感兴趣的:(Java)