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的共同的参数和方法了. */ }
努力加载评论中...
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步