泛型的反射

来源:互联网 发布:清华大学 网络教育 编辑:程序博客网 时间:2024/06/05 08:03
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;}


抽象类是不能实例化的,所以抽象类里面的this是指实际调用中它的派生类的实例化对象      


参考文章:

http://blog.csdn.net/liang5630/article/details/40185591


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1743536

0 0