当方法定义为 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。以下是一些可供考虑的备选方案:

  1. 如果您使用的是 Java 8 或更高版本,并且能够更改方法的 return 类型,您可以使用 OptionalInt 类型来表示 int 可能存在也可能不存在的值。在那种情况下,如果 return 没有 int 值,你会 return OptionalInt.empty(),return 和 OptionalInt.of(x) return int x。请注意,调用者需要使用 class 上可用的其他方法之一来解包 int 值(如果存在)。这种方法通常是新代码的首选,因为它使意图和用法非常清晰。
  2. 如果您使用的是较旧的 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 很重要在拆箱中。
  3. 如果需要使用intreturn类型,一般用sentinal value表示异常return .例如,如果该方法的正常 return 值都是非负整数,您可以使用 -1 之类的值来表示不存在的 return 值。这通常用于较旧的 JDK 方法,例如 String.indexOf().
  4. 在某些情况下,当无法 returned 时抛出 Exception 是有意义的。在真正的异常情况下使用这种方法是个好主意,因为抛出异常的运行时成本比普通方法高得多 returns,并且控制流会使代码更难理解。