我有如下定义的类:
@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方法,该方法比较对象内存地址。
这是怎么回事?
1条答案
按热度按时间hk8txs481#
假设你使用的是lombok的@Data,它会根据被注解类中的字段为你的类生成一个.equals()方法,也就是说equals-method不包含子类的字段,阅读注解文档:https://projectlombok.org/features/Data