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的共同的參數和方法了.*/ }
轉載于:https://www.cnblogs.com/wangxinblog/p/7351339.html