zoukankan      html  css  js  c++  java
  • SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)

    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    
    /**
     * 文件名 : BaseAction.java
     * 提取SSH中的action类
     * 由于SSH的action中采用模型驱动的方法,使用泛型的方式
     */
    public class BaseAction<T> extends ActionSupport implements ModelDriven<T> {
    
        /*
         * 实例化父类对象,提供model
         */
        public BaseAction() {
            // 获取子类中的泛型对象,当创建子类对象时候,会默认使用super()构造父类对象,而此时使用this关键字,指向的是子类的实例.
            Type genericSuperclass = this.getClass().getGenericSuperclass();
            ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
            Class<T> clazz = (Class<T>) parameterizedType.getActualTypeArguments()[0];
            try {
                model = clazz.newInstance();
            } catch (InstantiationException | IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        //采用模型驱动的方式
        protected T model;
    
        @Override
        /*
         * (提取父类的抽象类的模型代码)
         * 
         * @see com.opensymphony.xwork2.ModelDriven#getModel()
         */
        public T getModel() {
            return model;
        }
        
        /**
         * 后面就可以继续提取子类action的共同的参数和方法了.
         */
    }
  • 相关阅读:
    开通了
    A computer hardware platform abstraction
    脑机接口入门概览
    JDK自带VM分析工具jps,jstat,jmap,jconsole
    泛型里的super和extend
    动态规划
    用二分法查找的套路(一)
    A computer hardware platform abstraction
    CentOS7安装JDK1.8
    CentOS7如何修改hostname
  • 原文地址:https://www.cnblogs.com/wangxinblog/p/7351339.html
Copyright © 2011-2022 走看看