整数等于方法-有关当前实现的问题

时间:2018-11-01 08:57:44

标签: java

我是Java的新手,看着Integer.java实现,我看到'等于'方法的代码是这样的:

public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

我不明白为什么行

return value == ((Integer)obj).intValue();

调用方法intValue(),为什么它不能直接使用这样的值

return value == ((Integer)obj).value;

并保存一个方法调用。我认为这是为了应对扩展Integer的用户类。但是我看到Integer类被声明为 final 。因此,从性能角度来看,我认为直接使用价值会更有效。

In Java is there a performance difference between referencing a field through getter versus through a variable?,有几个答案,有人说使用方法与直接访问变量对性能的影响不大,而另一些人则说,除非编译器内联,否则处罚高达7倍。无论如何,它会有某种惩罚。

这不是In Java is there a performance difference between referencing a field through getter versus through a variable?的副本,因为 我在这里问有关Integer.java的特定代码。这似乎是一个小故障,正确的代码应为

return value == ((Integer)obj).value;

你怎么看?

顺便说一句,问题还涉及其他对象,例如整数,长整数,短整数等。

0 个答案:

没有答案