当方法定义为 int 数据类型时,如何在 Java 中 return null?
How can I return null in Java when the method is defined as int data type?
我一直在编写代码,其中强制使用的数据类型不能为 void,我不需要 return 任何东西。
在Java中,null
只是引用类型的有效值。它不能表示原始类型,例如 int
。以下是一些可供考虑的备选方案:
- 如果您使用的是 Java 8 或更高版本,并且能够更改方法的 return 类型,您可以使用
OptionalInt
类型来表示 int
可能存在也可能不存在的值。在那种情况下,如果 return 没有 int
值,你会 return OptionalInt.empty()
,return 和 OptionalInt.of(x)
return int x
。请注意,调用者需要使用 class 上可用的其他方法之一来解包 int
值(如果存在)。这种方法通常是新代码的首选,因为它使意图和用法非常清晰。
- 如果您使用的是较旧的 Java 版本,另一种可能性是将 return 类型更改为
Integer
. This is a wrapper class for int
values that does allow for null
to be returned. In addition, Java's auto-unboxing 规则允许它在 int
值是预期的,当值不是 null
时。但是,如果将 null
值拆箱为 int
值,它将导致 NullPointerException
,因此在执行可能导致结果的操作之前检查 null
很重要在拆箱中。
- 如果需要使用
int
return类型,一般用sentinal value表示异常return .例如,如果该方法的正常 return 值都是非负整数,您可以使用 -1
之类的值来表示不存在的 return 值。这通常用于较旧的 JDK 方法,例如 String.indexOf()
.
- 在某些情况下,当无法 returned 时抛出
Exception
是有意义的。在真正的异常情况下使用这种方法是个好主意,因为抛出异常的运行时成本比普通方法高得多 returns,并且控制流会使代码更难理解。
我一直在编写代码,其中强制使用的数据类型不能为 void,我不需要 return 任何东西。
在Java中,null
只是引用类型的有效值。它不能表示原始类型,例如 int
。以下是一些可供考虑的备选方案:
- 如果您使用的是 Java 8 或更高版本,并且能够更改方法的 return 类型,您可以使用
OptionalInt
类型来表示int
可能存在也可能不存在的值。在那种情况下,如果 return 没有int
值,你会 returnOptionalInt.empty()
,return 和OptionalInt.of(x)
returnint x
。请注意,调用者需要使用 class 上可用的其他方法之一来解包int
值(如果存在)。这种方法通常是新代码的首选,因为它使意图和用法非常清晰。 - 如果您使用的是较旧的 Java 版本,另一种可能性是将 return 类型更改为
Integer
. This is a wrapper class forint
values that does allow fornull
to be returned. In addition, Java's auto-unboxing 规则允许它在int
值是预期的,当值不是null
时。但是,如果将null
值拆箱为int
值,它将导致NullPointerException
,因此在执行可能导致结果的操作之前检查null
很重要在拆箱中。 - 如果需要使用
int
return类型,一般用sentinal value表示异常return .例如,如果该方法的正常 return 值都是非负整数,您可以使用-1
之类的值来表示不存在的 return 值。这通常用于较旧的 JDK 方法,例如String.indexOf()
. - 在某些情况下,当无法 returned 时抛出
Exception
是有意义的。在真正的异常情况下使用这种方法是个好主意,因为抛出异常的运行时成本比普通方法高得多 returns,并且控制流会使代码更难理解。