【发布时间】:2019-05-15 20:32:38
【问题描述】:
我有两个构造函数,第一个构造函数创建一些过程,例如创建新对象并且没有 if\for 语句。并且这个构造函数不能被改变,即使是私有的。
但是第二个构造函数得到一个 int 值并且工作起来像 如果为负抛出异常 如果肯定做一些过程 但是如果 num=0 避免重复代码我想调用第一个构造函数。
实现这样的代码的正确方法是什么?请注意,这些构造函数在同一个类中。
public class SomeClass{
public SomeClass() {
//Do some process
}
public SomeClass(int num) {
if (num == 0) {
this(); //here we have an issue
}
}
}
【问题讨论】:
-
调用当前类的构造函数必须是它的另一个构造函数中的第一个语句。
-
您可能希望将第一个构造函数中的代码移动到新的私有方法中。然后在 num=0 的情况下从第二个构造函数调用此方法
-
@Arnaud 我知道,这就是我发布这个问题的原因。我无法从第一行调用,因为我需要检查 num 是否等于零。只有在这种情况下,我才想调用第一个构造函数。
-
firstConstructor和secondConstructor不能都是构造函数,因为它们不能都与类同名。 -
@luk2302 我猜 OP 知道这一点。我编辑了问题,这样事情就更清楚了
标签: java constructor