Java中是否有一种明确定义构造函数的方法?

7
这个问题的答案解释了构造函数不明确问题的原因,但如果我想构造一个包含这种构造函数的第三方对象,并且我想将参数传递为null,我是否可以通过某种方式告诉Java我指的是哪个构造函数来构造对象呢?
特别地,在这个例子中:
public Example(String name) {
    this.name = name;
}

public Example(SomeOther other) {
    this.other = other;
} 

假设我要使用第一个构造函数实际构建一个new Example(null),有没有一些语法可以让我做到这一点?

2
类型转换 null - Johannes H.
4
可以,但这会指向一个糟糕的设计。如果使用 nullary 构造函数可以有效地构造对象,则应该使用它。 - Brian Roach
请注意,这里涉及的是“第三方”的问题。这并不是原帖作者的错 :) - Johannes H.
@JohannesH。否则,当 OP 运行时它就会挂掉 :) - Brian Roach
2
同意大家的看法,这是一个糟糕的设计。我已经反复检查了API文档,并发现确实存在一个无参构造函数,但我仍然相信,对于未来处理类似这样设计糟糕的API时,这是一种有用的技巧。 - merlin2011
显示剩余2条评论
1个回答

10

是的,通过显式地强制类型转换null参数:即调用 Example((String)null);Example((SomeOther) null);

正如之前提到的,这样做暗示了一个糟糕的设计,我也同意。你应该尝试编写防弹代码,这样这种模棱两可的情况就不存在或者不重要了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接