首页 > 解决方案 > 如何确定扩展抽象类的对象的类

问题描述

我正在尝试将 JPA 实体的通用功能放在一个抽象类中:

@MappedSuperclass
public abstract class AbstractEntity implements java.io.Serializable {
    private static final Logger log = LoggerFactory.getLogger(ConcreteClass.class);

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private UUID uuid;

@Override
public int hashCode() {
    return getUuid().hashCode();
}
@Override
public boolean equals(final Object obj) {
    if (this == obj)
        return true;
    if (!(obj instanceof ConcreteClass))
        return false;
    return getUuid().equals(((ConcreteClass) obj).getUuid());
}

这可能/有用吗?抽象类如何找出具体类?

参考下面的评论(工作代码):

@Override
public boolean equals(final Object obj) {
    if (this == obj)
        return true;
    if (obj instanceof AbstractEntity && this.getUuid().equals(((AbstractEntity)obj).getUuid()))
        return true;
    return false;
}

标签: javajpa

解决方案


你没有。你在这里真正关心的是

obj instanceof AbstractEntity && this.getUuid().equals(((AbstractEntity)obj).getUuid())

有可能

this.getClass() == obj.getClass()

推荐阅读