java - super 中的Unnest方法

标签 java

请考虑以下类:

class MyClass extends Parent {
    private AnotherClass property;

    public MyClass(int value) {
        super(new AnotherClass(value));
        this.property = new AnotherClass(value);
    }
}

class AnotherClass {
    /* Implementation not shown */
}

class Parent {
    /* Implementation not shown, and may not be changed */
}

在不更改构造函数参数的情况下,(例如:MyClass(AnotherClass value)),我如何构建它以便 new AnotherClass() 不会被调用两次?

以下是无效的示例:

public MyClass(int value) {
    AnotherClass anotherClass = new AnotherClass(value);
    super(anotherClass);
    this.property = anotherClass;
}

它会引发一个错误,指出对 super 的调用必须在第一行。

我正在创建需要双重分派(dispatch)的东西,并且我可能不会更改 MyClass 的实例化方式。 (新的 MyClass(0))。我也可能不会碰 super 类。

是否可以只调用一次AnotherClass?

最佳答案

移动它使用两个构造函数

public MyClass(int value) {
    this (new AnotherClass(value));
}

public MyClass(AnotherClass a) {
    super(a);
    this.property = a;
}

注意

这也是@alfasin 建议的

关于java - super 中的Unnest方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24278179/

相关文章:

apache - 在使用 apache poi 替换 Microsoft 2007 (HWPFDocument) 文档的内容时需要帮助

java - 对于 Java 中的按位运算,我是否需要关心 Java 中的大多数数字类型是否已签名?

java - Spring Boot无法连接MySQL并在Docker/Docker compose中退出

java - 在不考虑计算资源的情况下,套接字可以处理的最大并发连接数是多少?

java - 解决数独的多线程算法?

java - 在像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

java - 从 Spring 上下文访问 Spring 测试类对象

java - 这个日期是什么格式? [17/6/2015 5 :50:22 5 -120]

java - 将枚举与实例一起使用

java - 使用 Mockito 注入(inject) DozerBeanMapper