泛型的反射

简介: 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;im
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

目录
相关文章
|
Java 编译器
Java反射操作泛型
Java反射操作泛型
53 0
|
4月前
|
存储 缓存
优美的使用反射,哪些场景推荐使用反射,哪些不推荐使用
优美的使用反射,哪些场景推荐使用反射,哪些不推荐使用
39 0
|
4月前
|
缓存 安全 Java
反射带来的问题
反射带来的问题
38 0
反射和反射的方法
反射和反射的方法
|
Java
反射获取声明泛型工具类
反射获取声明泛型工具类
58 0
|
安全 数据可视化 IDE
反射(二)什么是反射
反射(二)什么是反射
72 0
|
编译器
反射、注解和泛型相关的坑
泛型 类型擦除 桥接方法
|
编译器
反射、注解和泛型相关的坑
根据反射来获取方法,很多人觉得获取方法传入参数就可以了,但是遇到方法的重载的时候,怎么能够知道此次执行走的是哪个方法呢?
|
Java
获取java泛型类中的泛型类型
实现java中获取泛型类中的泛型类型的方法
269 0
|
存储 安全 Java
Java泛型01:什么是泛型?
Java泛型01:什么是泛型?
116 0
Java泛型01:什么是泛型?