利用反射来获取继承的类的类型

本文介绍了一种在web项目中使用的BaseAction泛型类的设计思路,该类通过反射机制自动获取其子类的类型信息,并实例化对应的model,用于封装jsp页面的数据。

  在做web项目的时候,通常都有一个 BaseDao,BaseAction之类的,比如最近在学习一个 ssh项目,其中就要注入 dao,还有利用 模型驱动 来实现将 jsp页面封装成一个model,传到action中,因为表单,对应的 model也不同,所以要分别注入。这样就可以在定义 BaseAction 时,采用反射的方式,就可以自动获取继承类的类型了。

  

public abstract class BaseAction<T> extends ActionSupport implements
        ModelDriven<T>, Preparable {
    protected T model ;
    private static final long serialVersionUID = -1132381027435158666L;
    private Class<T> clazz ;
    
    public BaseAction(){
        ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass() ;
        clazz = (Class<T>) type.getActualTypeArguments()[0] ;
        try {
            model = clazz.newInstance() ;
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }

    public void prepare() throws Exception {

    }

    public T getModel(){
        return model ;
    }

}

 

转载于:https://www.cnblogs.com/alwaysjava/p/4229785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值