我想在调用构造函数时强制用户填写可选参数:
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的能力。
有什么好的解决方案可以做到这一点吗?请不要说varargs参数必须是可选的。问题不在于此。
也许下面是一个额外的默认构造函数?
/**
* Please provide at least one parameter.
*/
@Deprecated
public MyClass() {
throw new IllegalStateException("Please provide at least one parameter");
}
问题内容: 如果我有一个vararg Java方法并调用,则我和 都将null。但是,如果我呼叫f,则其本身为null。为什么会这样呢? 我应该怎么称呼这样的? 问题答案: 问题是,当你使用原义null时,Java不知道它应该是哪种类型。它可以是空对象,也可以是空对象数组。对于单个参数,假定为后者。 你有两种选择。将null显式转换为Object或使用强类型变量调用该方法。请参见下面的示例: 输出
问题内容: 考虑方法声明: 该Object …参数只是对Objects 数组的引用。有没有办法在引用实际Object数组时使用此方法?如果我将Object数组传递给…参数-结果参数值将是一个二维数组-因为an Object[]本身就是an Object: 因此,数组的第一个组件(String.format方法中使用了哪个)将是一个数组,他将生成: 然后由于数组大小为1而发生错误。 该大胆的顺序是真
我试图用getter方法而不是字段来强制hibernate使用setter,但没有成功 我试图在字段上使用,但不起作用 如何强制hibernate调用setter方法填充类字段?
问题内容: Varargs: 与 单数组参数: Java 1.6似乎接受/拒绝以下内容: 假设以上内容是正确的,为什么不总是使用varargs而不是单个数组参数呢?似乎免费增加了呼叫者的灵活性。 如果有,专家可以共享内部JVM的不同吗? 谢谢。 问题答案: 数组从Java的开始就出现了,而varargs是最近才添加的。因此,许多旧代码仍然很高兴地使用数组。 还要注意,使用显式数组参数调用通用var
我正在尝试填充一个NxN矩阵。我想做的是能够将给定行的所有元素作为一个输入输入。例如,如果我有一个4x4矩阵,对于每一行,我想在一个输入中输入4列,然后在每次输入后打印显示新值的矩阵。我尝试运行以下代码,但我得到一个错误:线程“main”中的异常java.util.InputMismatchException。这是我的代码: 当我得到输入4个数字的提示时,我输入以下内容: 然后我得到错误。
问题内容: 我知道该怎么做,但是我发誓您可以像[[0] = {0,0,0,0};那样填写;你是怎么做到的?我确实尝试过Google,但没有任何帮助。 问题答案: 您也可以将其作为声明的一部分: