当作笔记记忆一下
public class BasePresenter<V extends BaseView,M extends BaseModel>{
private M mModel;
public void attach(){
//1、返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type
Type genType = getClass().getGenericSuperclass();
//2、泛型参数
Type[] types = ((ParameterizedType) genType).getActualTypeArguments();
//3、因为BasePresenter 有两个泛型 数组有两个
try {
//
mModel= (M) ((Class)types[1]).newInstance();
//这里需要强转得到的是实体类类路径
// 如果types[1].getClass().newInstance();并不行,得到的是泛型类型
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public M getModel(){
return mModel;
}
}
more >>