【问题标题】:What is constructor chaining and how is it achive in java? [duplicate]什么是构造函数链接,它是如何在 Java 中实现的? [复制]
【发布时间】:2013-12-24 09:53:46
【问题描述】:

什么是构造函数链以及它是如何在java中实现的,请举个例子

【问题讨论】:

  • 你为什么不提出你的想法,你为什么这么想? (而不是要求我们为您在网上找到众多教程之一..)

标签: java


【解决方案1】:

构造函数链接是一种技术,当您的所有构造函数都引用类中的单个构造函数时,该构造函数为省略的参数提供默认值。目标是明确对象构造并减少冗余:

public static final class Foo{
    private final String a;
    private final String b;
    private final String c;
    private final String d;

    public Foo(String a, String b, String c, String d){
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;
    }

    public Foo(String a, String b, String c){
        this(a, b, c, "d");
    }

    public Foo(String a, String b){
        this(a, b, "c");
    }
}

【讨论】:

  • 这称为伸缩构造函数。构造函数链调用父构造函数。
  • 我在 SO 上看到了这个术语,正如我所描述的那样(即link)。谷歌搜索伸缩构造函数给出了 J. Bloch 的报价,所以我认为这两个可能是同义词。
【解决方案2】:

当您有公共嵌套类时使用构造函数链接。

例如

public class A {
    public class B {
        public class C {
        }
    }
}

要创建一个 C,你需要一个 B,它需要一个 A。

C c = new A().new B().new C();

恕我直言,这打破了封装,您应该在每个类中都有一个方法,该方法可以返回一个嵌套类,而不是在外部创建它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多