java泛型和反射在web项目中的应用

public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T> {

// =============== ModelDriven的支持 ==================

protected T model;

public BaseAction() {
try {
// 通过反射获取model的真实类型
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0];
// 通过反射创建model的实例
model = clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}

public T getModel() {
return model;
}

在以后写action的时候就可以直接的应用了public class className extends BaseAction<Object>

关键就是 父类通过泛型获得子类的对象

你可能感兴趣的:(java,Web)