【问题标题】:How can I return null in Java when the method is defined as int data type?当方法定义为 int 数据类型时,如何在 Java 中返回 null?
【发布时间】:2022-01-10 17:31:13
【问题描述】:

我一直在做一个代码,它强制使用数据类型不能是无效的,我不需要返回任何东西。

【问题讨论】:

  • 当方法定义为 int 时如何在 Java 中返回 null:你不能
  • 正如@fantaghirocco 所说,如果方法类型为int,则不能返回null。但是如果方法是处理数组或者列表,以及元素在数组或者列表中的位置,可以返回-1,表示没有找到该元素

标签: java types null integer return


【解决方案1】:

在 Java 中,null 只是引用类型的有效值。它不能表示基本类型,例如int。以下是一些可供考虑的替代方案:

  1. 如果您使用 Java 8 或更高版本,并且能够更改方法的返回类型,您可以使用 OptionalInt 类型来表示可能存在或不存在的 int 值。在这种情况下,如果没有要返回的 int 值,您将返回 OptionalInt.empty(),而 OptionalInt.of(x) 将返回 int x。请注意,调用者需要使用该类上可用的其他方法之一来解开 int 值(如果存在)。这种方法通常是新代码的首选,因为它使意图和用法非常明确。
  2. 如果您使用的是较旧的 Java 版本,另一种可能性是将返回类型更改为 Integer。这是int 值的包装类,它允许返回null。此外,Java 的auto-unboxing 规则允许它在预期int 值的上下文中使用,而该值不是null。但是,如果将null 值拆箱为int 值,则会生成NullPointerException,因此在执行可能导致拆箱的操作之前检查null 非常重要。
  3. 如果需要使用int返回类型,一般使用sentinal value来表示异常返回。例如,如果该方法的正常返回值都是非负整数,则可以使用 -1 之类的值来表示不存在的返回值。这通常用于较旧的 JDK 方法,例如 String.indexOf()
  4. 在某些情况下,当无法返回有效值时,抛出Exception 是有意义的。仅在真正异常的情况下使用这种方法才是一个好主意,因为抛出异常的运行时成本远高于正常的方法返回,而且控制流会使代码更难理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2016-02-15
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多