您的位置:首页 > 编程语言 > Java开发

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: