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

  在做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 ;

    }



}

 

你可能感兴趣的:(反射)