有效的java 2,Item 42为方法提供了一个优雅的方法,至少有一个参数,如果输入为空,则在编译时失败。代码如下所示min()
方法,但是我想知道调用此方法的优雅方法是什么,因为现在简单地传递list
将触发编译器错误。
public class OneOrMoreArgs {
public static int min(int firstArg, int... remaining){
// but then how do you call the function with a int[] ?
int _min = firstArg;
for(int x: remaining){
if(_min < x ){
_min = x;
}
}
return _min;
}
public static int sum(int... list){
int s = 0;
for(int a: list){
s += a;
}
return s;
}
public static void main(String []args){
int[] list = {1,2,3,4,5};
System.out.println(OneOrMoreArgs.sum(list));
System.out.println(OneOrMoreArgs.min(list));
}
}
答案 0 :(得分:0)
好吧,调用它的优雅方式是
OneOrMoreArgs.min(1, 2, 3, 4, 5);
如果您需要传入一个数组,可以添加一个额外的方法签名,如下所示:
public static int min(int[] args){
if (args == null || args.length < 1) {
throw new IllegalArgumentException("... some error message...");
}
return min(args[0], Arrays.copyOfRange(args, 1, args.length));
}
需要注意的是:
对于您的用例,您最好只声明一个采用数组参数的方法,例如示例中的sum()
。