代码之家  ›  专栏  ›  技术社区  ›  skyman

如何确定扩展抽象类的对象的类

  •  0
  • skyman  · 技术社区  · 6 年前

    我试图将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;
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   user207421    6 年前

    你没有。你真正关心的是

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

    也许

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