Java中是否有“boolean Object.isNull(Object Object)”或类似的静态实用程序方法?
与以下对话相关-Java中是否有“boolean Object.isNull(Object Object)”或类似的静态实用程序方法?,java,nullpointerexception,null,nullable,Java,Nullpointerexception,Null,Nullable,与以下对话相关- 第二个链接提供了一些避免!=空语句 使用assert就是其中之一 使用-不是一个选项,因为每个交易的人都不负责生产代码 第一个链接只是建议!=空idea hasrequiresNonNull方法,这些方法抛出NullPointerException,如果使用对象,无论如何都会抛出NullPointerException断言也提出了同样的方法。如果我能处理所有的异常,那么代码就会因为太多的尝试和捕获而变得丑陋 使用!=null在面向对象的意义上不是很漂亮 我认为Objec
!=空
语句
assert
就是其中之一!=空
idea
hasrequiresNonNull
方法,这些方法抛出NullPointerException,如果使用对象,无论如何都会抛出NullPointerException<代码>断言也提出了同样的方法。如果我能处理所有的异常,那么代码就会因为太多的尝试和捕获而变得丑陋
使用!=null在面向对象的意义上不是很漂亮
我认为Object.isNull
和Object.isNotNull
是让代码看起来简洁整洁的方法,同时也能很好地处理这种情况(我的意思是不用冗长的try…catch
语句)。我可以很容易地在任何条件语句中使用它们。这比原始的!=空
但是,为什么没有这样的方法呢?传空真是个坏主意吗?如果是,那么如果null是有效响应而不是,我们该怎么办空值
编辑:
将问题改为:
为什么Java中没有布尔对象.isNull(对象对象)
静态实用程序方法?在Java中是否存在布尔对象.isNull(对象对象)
或类似的静态实用程序方法?:
静态布尔值为空(对象obj)
如果提供的引用为null,则返回true,否则返回false
静态布尔非空(对象obj)
如果提供的引用为非null,则返回true,否则返回false
从1.8开始,尽管…:
静态布尔值为空(对象obj)
如果提供的引用为null,则返回true,否则返回false
静态布尔非空(对象obj)
如果提供的引用为非null,则返回true,否则返回false
从1.8开始,虽然…我不明白使用obj==null
和obj!=空
Objects.isNull
和Objects.nonNull
都使用returnobj==null
和returnobj!=null
内部。如果(x!=null)
在许多上下文中,代码本身没有任何错误。您应该更深入地阅读第二个链接,因为(在我看来)所提出的要点是,您不应该随意地从自己的代码返回null
,这会迫使客户端代码过度防御。添加Objects.isNull的详细信息只在处理流或使用方法引用的其他上下文时才有价值。在任何情况下盲目地使用“==null是坏代码”这样的语句都是愚蠢的。(a)您似乎混淆了Object
和Objects
。(b) 在Java 8中,有对象.isNull
和对象.nonNull
。此外,您不应该使用try catch
来检查null<代码>对象!=null
是检查对象是否为null
的正确方法,使用try-catch
进行null检查是一种糟糕的设计。@Tarunmagnti对我来说,假设您知道自己在使用它时在做什么以及不应该做什么是很简单的。我不会告诉木匠不要使用锤子,因为他可能会伤到拇指……我不明白使用obj==null
和obj!=空
Objects.isNull
和Objects.nonNull
都使用returnobj==null
和returnobj!=null
内部。如果(x!=null)在许多上下文中,代码本身没有任何错误。您应该更深入地阅读第二个链接,因为(在我看来)所提出的要点是,您不应该随意地从自己的代码返回null
,这会迫使客户端代码过度防御。添加Objects.isNull的详细信息只在处理流或使用方法引用的其他上下文时才有价值。在任何情况下盲目地使用“==null是坏代码”这样的语句都是愚蠢的。(a)您似乎混淆了Object
和Objects
。(b) 在Java 8中,有对象.isNull
和对象.nonNull
。此外,您不应该使用try catch
来检查null<代码>对象!=null
是检查对象是否为null
的正确方法,使用try-catch
进行null检查是一种糟糕的设计。@Tarunmagnti对我来说,假设您知道自己在使用它时在做什么以及不应该做什么是很简单的。我不会告诉木匠不要使用锤子,因为他可能会伤到拇指…@反斜杠它们可以用作流的方法引用。代码看起来更干净someList.stream().filter(Objects::nonNull).forEach(…)
@MikhailAntonov这正是它只出现在Java8中的原因。在方法引用之前,它是无用的system@MikhailAntonov在这种特殊情况下,它是有意义的!但是OP在问题中没有具体说明这一点,他通常谈到“在面向对象语言中检查空值”,正如OP所说的“使用!=null在面向对象的意义上不是很漂亮。”-这在我看来完全是荒谬的。@Tarunmagni使用空值检查或不使用空值检查可能有很多原因。有些很好,有些不太好。这是一种“没有黑或白”的东西。在某些用例中,只使用null并检查它可能是合理的,而在其他情况下,您当然希望避免这种情况。没有“总是坏的”或“总是好的”。谈到空引用本身是另一回事