java - 使用对象类型(Long)作为参数类型是一个坏主意吗?

标签 java exception

比如说,函数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/

相关文章:

java - 无法从操作监听器获取消息对话框

java - 使用 apache POI 按值合并动态单元格

python - 如何检查 TypeError 是否针对 NoneType

python - 为什么没有捕获到多父异常?

Java:给定一个文件名列表,确保相应的 XML 仅包含有关这些文件的信息

java - 如何在 lwjgl/slick2D 中使用系统鼠标光标(如 Cursor.TEXT_CURSOR)

java - Spring JMX。通过XML设置@ManagedAtrribute的默认值

c# - 总是 try catch 外部资源调用?

java - 关于用 Java 编写自定义类异常

python-3.x - 如何在多个异常情况下使用 pytest.raises?