java如何通过反射取得泛型的实例化对象
2014-03-31 15:25
711 查看
package cn.itcast.oa.base;
import java.lang.reflect.ParameterizedType;
import javax.annotation.Resource;
import cn.itcast.oa.service.DepartmentService;
import cn.itcast.oa.service.RoleService;
import cn.itcast.oa.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T> {
// =============== ModelDriven的支持 ==================
protected T model;
public BaseAction() {
try {
// 通过反射获取model的真实类型
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0];
// 通过反射创建model的实例
model = clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public T getModel() {
return model;
}
// =============== Service实例的声明 ==================
@Resource
protected RoleService roleService;
@Resource
protected DepartmentService departmentService;
@Resource
protected UserService userService;
}
import java.lang.reflect.ParameterizedType;
import javax.annotation.Resource;
import cn.itcast.oa.service.DepartmentService;
import cn.itcast.oa.service.RoleService;
import cn.itcast.oa.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T> {
// =============== ModelDriven的支持 ==================
protected T model;
public BaseAction() {
try {
// 通过反射获取model的真实类型
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0];
// 通过反射创建model的实例
model = clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public T getModel() {
return model;
}
// =============== Service实例的声明 ==================
@Resource
protected RoleService roleService;
@Resource
protected DepartmentService departmentService;
@Resource
protected UserService userService;
}
相关文章推荐
- JAVA-反射-getGenericSuperclass()——Java怎么取得一个对象的泛型类型
- 得到子类反射泛型,以及如何通过注解注入对象(仅供参考,未写实例代码)
- Java - 如何通过反射创建对象?
- Java 反射通过构造实例化对象
- Java - 如何通过反射获取和设置对象私有字段的值?
- 【GoLang】golang 如何像Java 一样通过类名反射对象?
- java通过反射,泛型将定义的对象与对象之间互转
- Java - 如何通过反射调用对象的方法?
- 如何利用java的反射机制动态的取得对象的属性?
- java通过暴力反射创建不可实例化类的对象实例
- 通过java反射技术获取泛型的真实类型并对其实例化
- Java反射02 : Class对象获取的三种方式和通过反射实例化对象的两种方式
- java 类的创建,如何通过类实例化对象。
- Java 通过反射获取一个Field对象的泛型类型
- java通过反射,只需要传了类名和参数,就可以根据不同参数的构造方法实例化对象
- Java通过反射将 Excel 解析成对象集合
- Java中对象如何初始化(实例化)
- 如何理解java中的依赖注入 通过构造函数和反射机制来实现的
- java5核心基础之泛型(3)-泛型作用于编译阶段-如何将String对象传入Integer类型的泛型对象中?
- 【怎样写代码】偷窥高手 -- 反射技术(七):通过反射实例化对象