准备超级构造函数的参数

mic*_*man 7 java constructor super

我有一个必须用参数构造的基类.在子类中,我需要在构造基类之前准备这个参数,但是在Java中必须先调用super.处理这种情况的最佳方法是什么(见下面的简单示例).

class BaseClass {
    protected String preparedParam;

    public BaseClass(String preparedParam) {
        this.param = param;
    }
}

class ChildClass {

    public ChildClass (Map<String, Object> params) {
        // need to work with params and prepare param for super constructor
        super(param);
    }
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*man 11

您可以创建一个静态方法,进行转换并调用它.

class ChildClass {

    static String preprocessParams(Map<String, Object> params) {
        ...
        return someString;
    }

    public BaseClass(Map<String, Object> params) {
        super(preprocessParams(params));
    }
}
Run Code Online (Sandbox Code Playgroud)


Whi*_*g34 5

这是一种方法:

class ChildClass {
    public ChildClass(Map<String, Object> params) {
        super(process(params));
    }

    private static String process(Map<String, Object> params) {
         // work with params here to prepare param for super constructor
    }
}
Run Code Online (Sandbox Code Playgroud)