通过反射得到model的真实类型
2017-09-27 12:45
274 查看
在遇到需要将几个功能的中的相同代码进行抽取到公共类BaseAction的时候:遇到泛型不能继承时,需要通过反射
得到真实的类型。如在抽取用户user类和部门Department类中的公共代码时:
public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T>{
protected T model; //这里需要初始化,但是泛型的类型不能确定。
public BaseAction(){
try {
//通过反射得到真实的类型
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0];
//通过反射得到model的真实类型
clazz.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public T getModel() {
return model;
}
}
这里的泛型 T 在用户User类和部门Department类继承时,protected T model; 这里model需要初始化,但是泛型的类型不能确定。
于是就可以通过反射的方式来进行model的初始化。
得到真实的类型。如在抽取用户user类和部门Department类中的公共代码时:
public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T>{
protected T model; //这里需要初始化,但是泛型的类型不能确定。
public BaseAction(){
try {
//通过反射得到真实的类型
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0];
//通过反射得到model的真实类型
clazz.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public T getModel() {
return model;
}
}
这里的泛型 T 在用户User类和部门Department类继承时,protected T model; 这里model需要初始化,但是泛型的类型不能确定。
于是就可以通过反射的方式来进行model的初始化。
相关文章推荐
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射,得到真实的类Demo
- 通过反射得到类型的所有成员
- 通过反射得到object[]数组的类型并且的到此类型所有的字段及字段的值
- 通过java反射技术获取泛型的真实类型并对其实例化