我一直在做一段代码,其中强制使用的数据类型不能为void,并且我不需要返回任何内容。
在Java中,null
只是引用类型的有效值。它不能表示像int
这样的基元类型。以下是一些需要考虑的替代方案:
- 如果您使用的是Java 8或更高版本,并且能够更改方法的返回类型,则可以使用
OptionalInt
类型来表示可能存在或不存在的int
值。在这种情况下,在没有int
值可返回的情况下,您将返回OptionalInt.empty()
,并返回OptionalInt.of(x)
以返回int x
。请注意,调用方需要使用该类上可用的其他方法之一来打开int
值(如果存在(。这种方法通常是新代码的首选方法,因为它使意图和用法非常清晰 - 如果您使用的是较旧的Java版本,另一种可能性是将返回类型更改为
Integer
。这是一个int
值的包装类,它允许返回null
。此外,Java的自动开箱规则允许它在期望int
值的上下文中使用,而该值不是null
。但是,如果将null
值取消装箱为int
值,则会产生NullPointerException
,因此在执行将导致取消装箱的操作之前,检查null
非常重要 - 如果需要使用
int
返回类型,通常使用重要值来表示异常返回。例如,如果该方法的正常返回值都是非负整数,则可以使用-1
等值来表示不存在的返回值。这通常用于较旧的JDK方法,如String.indexOf()
- 在某些情况下,当无法返回有效值时抛出
Exception
是有意义的。在真正特殊的情况下使用这种方法是个好主意,因为抛出异常的运行时成本远高于正常的方法返回,而且控制流可能会使代码更难理解