我想为接受 3 个参数的 Java 类创建一个初始化方法:
Employee[] method( String[] employeeNames, Integer[] employeeAges, float[] employeeSalaries )
{
Employee myEmployees[] = new Employee[SIZE]; // I don't know what size is
for ( int count = 0; count < SIZE; count++)
{
myEmployees[count] = new Employee( employeeNames[count], employeeAges[count], employeeSalaries[count] );
}
return myEmployees;
}
您可能会注意到这段代码是错误的。未定义 SIZE 变量。我的问题是我想传入 3 个数组,但我想知道我是否可以确保这三个数组都具有相同的数组大小。这样 for 循环就不会失败,因为 for 循环中的构造函数使用数组的所有参数。
也许 Java 有一个不同的特性可以强制解决我的问题。我可以接受另一个名为 SIZE 的参数,它将在 for 循环中使用,但如果参数 1 和 2 的大小为 10,而第三个参数是大小为 9 的数组,这并不能解决我的问题。
我如何强制这 3 个参数都是包含完全相同数量元素的数组?使用指定数组大小的额外参数不是很优雅而且有点脏。它也没有解决数组参数包含不同大小数组的问题。
最佳答案
你不能在编译时强制执行。您基本上必须在执行时检查它,如果不满足约束则抛出异常:
Employee[] method(String[] employeeNames,
Integer[] employeeAges,
float[] employeeSalaries)
{
if (employeeNames == null
|| employeeAges == null
|| employeeSalaries == null)
{
throw new NullPointerException();
}
int size = employeeNames.length;
if (employeesAges.length != size || employeeSalaries.length != size)
{
throw new IllegalArgumentException
("Names/ages/salaries must be the same size");
}
...
}
关于具有强制数组大小参数的 Java 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/934002/