java - 签名重叠时如何重载构造函数?

标签 java constructor overloading

假设我有一个构造函数 FooBar(String foo, String bar)。有时我需要创建只有“foo”的对象,有时只有“bar”,有时两者都有。

在对象创建期间避免 null 的明显本能是重载构造函数。 但这会产生相同签名的问题。 例如:

FooBar(String foo)
FooBar(String bar)
FooBar(String foo, String bar).

假设我不想在这里使用构建器,是否有任何已知的替代方法来避免在不使用 null 的情况下构建对象?换句话说,防止类似 = new FooBar("foo", null) ??

最佳答案

提供 static 工厂方法,其名称可以变化并反射(reflect)实际用途:

public static FooBar createWithFooOnly(String foo) {
    FooBar fb = new FooBar();
    fb.setFoo(foo);
    return fb;
}

public static FooBar createWithBarOnly(String bar) {
    FooBar fb = new FooBar();
    fb.setBar(bar);
    return fb;
}

public static FooBar createWithFooAndBar(String foo, String Bar) {
    FooBar fb = new FooBar();
    fb.setFoo(foo);
    fb.setBar(bar);
    return fb;
}

您声明您不需要构建器,但那将是消除 null 的最佳方式。这听起来像是下一个最佳方法。

关于java - 签名重叠时如何重载构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19696275/

相关文章:

java - Java 游戏中链表的迭代器

继承代码的 C++ 错误(没有匹配的构造函数)

c++ - 多重继承中的构造函数调用顺序

Java:在创建时将值传递给对象时,应该初始化的成员会发生什么?

c++模板函数用const参数覆盖参数推导

java - 小足迹依赖注入(inject)java

java - 最长公共(public)子序列算法讲解

java - 搜索 Nexus 永远不会显示最新的 Artifact 版本

java - 如果相同的方法重载和覆盖,Java 中的意外多态行为

c# - 这个方法重载是怎么回事?