Action类怎么继承使用?



我想要对Action的继续,改造请求处理的流程,添加非controllerClass和method的请求处理方式,进而继承ActionHandler改造流程,扩展其他的便利用途。可是继承Action后,不能决定独自编辑继承类的构造函数,必须要调用父类的this和super才行,可调用this和supe,会报异常的。

这是Action的类的构造函数,有一段ParaProcessorBuilder.me.build(controllerClass, method),而我配置的Action继承者的子类的构造函数中并不会添加controllerClass和method等参数。

public Action(String controllerPath, String actionKey, Class<? extends Controller> controllerClass, Method method, String methodName, Interceptor[] interceptors, String viewPath) {
    this.controllerPath = controllerPath;
    this.actionKey = actionKey;
    this.controllerClass = controllerClass;
    this.method = method;
    this.methodName = methodName;
    this.interceptors = interceptors;
    this.viewPath = viewPath;
    
    this.parameterGetter = ParaProcessorBuilder.me.build(controllerClass, method);
    
    // 支持高版本 JDK 的安全策略
    method.setAccessible(true);
}


我要继承Action进行扩展,怎么解决这个问题?

评论区

杜福忠

2025-11-05 12:06

创建一个占位和共享的 ParaProcessorController 类对象即可,该类无实际用处,只用于传参占位不报错。
这个是java编程里面常用的解决方式,参数不让用null就创建一个临时对象,需要改造的位置还可以用于对象判断,是否要进行下一步处理之类

chilun555

2025-11-05 15:24

@杜福忠 占位和共享ParaProcessorController ,可是还有个method参数位,那个填什么?随便乱反射一个函数?

杜福忠

2025-11-05 15:56

@chilun555 对啊,随便反射一个对象共享起来,比如 ParaProcessorController 里面一个index方法, ppc.getDeclaredMethods()[0]

热门反馈

扫码入社