【发布时间】:2012-04-28 09:39:20
【问题描述】:
在 Java 中,我可以执行以下操作来简洁地防范 NullPointerException:
if ("myString".equals(someOtherString))
但我不能对整数做同样的事情,例如
if (5.equals(someOtherInteger))
我得到一个编译时错误。关于为什么做出这个设计决定的任何想法?或者任何可以解释它的资源?提前致谢。
编辑:someOtherInteger 是 Integer,而不是 int。
【问题讨论】:
-
Integer是一个对象。int是原始类型,就像 C 中的ints。因此,它没有继承自Object的.equals()方法。 -
@Travis 那么,您的问题是为什么 Java 语言不提供语法糖来允许在应用点 (.) 运算符时自动自动装箱原始整数,以便您可以简单地编写这个 Yodah 类型的谓词?我做对了吗?
-
@edalorzo 你明白了。真实性的答案提供了迄今为止所有答案中最深刻的见解。
-
@Travis 我的好同事,有一百万件事我想知道为什么 Java 不做。而且我几乎认为答案很简单,因为它就是这样。互联网上充斥着关于如何改进 Java 的好主意,但它们都需要时间、金钱和人力资源,因此,它们被投资在更重要的地方。我认为没有任何官方文档说明为什么没有实现这一点,但我们当然可以将它添加到一长串好主意中,如果它还没有的话。
-
@edalorzo 这不是功能要求,只是一个问题。而且,Jeffrey 刚刚提供了一些您声称不存在的文件。
标签: java autoboxing