无论字段值如何,两个不同的Java对象始终相等

6yoyoihd  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(133)

我有如下定义的类:

@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder

public abstract class A {
    private Enum myEnum;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder

public class KA extends A {
    private MyPackage pck;
    private String field1;
    private String field2;
}

我用下面的代码测试了它们:

KA ka1 = new KA();
KA ka2 = new KA();
System.out.println("Object equal: " + ka1.equals(ka2));

对于KA,无论是无参数构造函数还是参数完全不同的构造函数,我都认为它们是相等的。
我希望KA使用Object类的默认equal方法,该方法比较对象内存地址。
这是怎么回事?

hk8txs48

hk8txs481#

假设你使用的是lombok的@Data,它会根据被注解类中的字段为你的类生成一个.equals()方法,也就是说equals-method不包含子类的字段,阅读注解文档:https://projectlombok.org/features/Data

相关问题