比如说,函数setX定义如下:
public void setX(Long l) {
.....
.....
}
如果调用函数时参数为空值,会发生什么?如果我们在函数中的某处进行自动拆箱,会导致 NPE 异常吗?
作为一种做法,我们可以安全地说,使用 Long 作为函数的参数是一种不好的做法,而应该始终使用 long 吗?
最佳答案
如果您自动将 Long
拆箱为 long
而不检查 null,您将得到 NullPointerException
。
如果您的方法处理传递给它的 null
值,则使用 Long
而不是 long
是有意义的。如果您从不打算传递 null
,则应该使用 long
。
如果您使用的是 Java 8 或更高版本,您还可以使用 OptionalLong
。
如果您的方法是 setter(即设置某个实例变量的值),如 setX
名称所暗示的那样,则仅对 Long
的参数才有意义code> 如果相应的实例变量也是Long
(假设允许为null
)。
关于java - 使用对象类型(Long)作为参数类型是一个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53800540/