使用Java 7的Objects.equals比较字段?

时间:2015-06-03 10:03:36

标签: java performance

我只是生成了一些equals方法,并且想知道使用Objects.equals()方法将字段与Java 7进行比较是否明智。

Eclipse生成如下所示:

public class A
{
    private String a;
    private String b;

    @Override
    public boolean equals(Object obj)
    {
        if(this == obj)
            return true;
        if(obj == null)
            return false;
        if(getClass() != obj.getClass())
            return false;
        A other = (A)obj;
        if(a == null)
        {
            if(other.a != null)
                return false;
        }
        else if(!a.equals(other.a))
            return false;
        if(b == null)
        {
            if(other.b != null)
                return false;
        }
        else if(!b.equals(other.b))
            return false;
        return true;
    }
}

我想知道,如果这是好的做法:

public class A
{
    private String a;
    private String b;

    @Override
    public boolean equals(Object obj)
    {
        if(this == obj)
            return true;
        if(obj == null)
            return false;
        if(getClass() != obj.getClass())
            return false;
        A other = (A)obj;
        return Objects.equals(a, other.a) && Objects.equals(b, other.b);
    }
}
你怎么看?我试图测试它的性能,但它没有显示出差异......

1 个答案:

答案 0 :(得分:4)

是的,这是一个很好的做法。这样,equals方法看起来更清晰,没有任何缺点,除了额外的方法调用,在大多数情况下,JIT编译器很容易内联。请注意,Objects.equals首先出现在Java 7中,而不是Java 8。