use*_*316 2 java overloading nullpointerexception
我有一种方法,我想在不同的场合使用.这意味着我想使用该方法,但每次传递不同数量的参数:
考虑这个例子:
public checkInput(Object a, Object b, Object c, Object d) {
a.someMethod();
b.someMethod();
c.someMethod();
d.someMethod();
}
Run Code Online (Sandbox Code Playgroud)
现在我只能checkInput(...)
在传入4个参数时使用此方法.但是,有时我只能传递两个参数.
如果我想打电话给这样的方法,checkInput(a, b, null, null);
我会得到一个NullPointerException
.
所以现在我想知道,在这种情况下我是否必须使用重载,这意味着我将不得不创建
public checkInput(Object a) {
a.someMethod();
}
public checkInput(Object a, Object b) {
a.someMethod();
b.someMethod();
}
Run Code Online (Sandbox Code Playgroud)
... 等等.
您可以定义Variable arity方法:
public checkInput(Object... args) {
// args is nothing but an array.
// You can access each argument using indices args[0], args[1], ...
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用任意数量的参数调用此方法:
checkInput(obj);
checkInput(obj1, obj2);
Run Code Online (Sandbox Code Playgroud)
使用varargs类似于使用数组作为参数.但它为您提供了传递参数的灵活性,而无需创建数组.
但要小心,因为var-args的类型是Object
,它将采用任何类型的参数.您应该在使用它们之前进行适当的检查.此外,您的方法中只能有一个vararg参数,这也应该在参数列表中排在最后.
归档时间: |
|
查看次数: |
78 次 |
最近记录: |