【发布时间】:2015-10-01 15:25:48
【问题描述】:
我想强制用户在调用我的构造函数时填写一个可选参数:
public MyClass(String... params) {
this.params = params;
}
目前,以下代码有效:
new MyClass();
我想阻止它。我想到了这个:
public MyClass(String param1, String... otherParams) {
this.params = new String[1 + otherParams.length];
this.params[0] = param1;
// fill 1..N params from otherParams
}
String[] params 不是一个选项,因为我需要能够使用逗号分隔的 args。
有什么好的解决方案可以实现这一点吗?请不要说可变参数必须是可选的。问题不在于那个。
【问题讨论】:
-
otherParams 可能为 null,如果有人写 ´new MyClass("a", null)´
-
如果你期望的参数数量不存在,你能不能抛出一个异常?
-
也许检查this解决方案?