java - 如何确定扩展抽象类的对象的类
问题描述
我正在尝试将 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;
}
解决方案
你没有。你在这里真正关心的是
obj instanceof AbstractEntity && this.getUuid().equals(((AbstractEntity)obj).getUuid())
有可能
this.getClass() == obj.getClass()
推荐阅读
- sql-server - 尝试在 Windows 上将 Linux 与 SQL Server 连接的连接问题
- haskell - 是 Haskell 的美元 $ 运算符,和 F# 的向后管道 <| 同样的想法?
- c# - 不同会话变量的不同会话超时?
- ebean - 使用 eBean ORM 时的 tornadofx 数据绑定
- flutter - Flutter 重置 AlertDialog 的状态
- spring - Bootstrap 没有加载 Thymeleaf
- mysql - 超过锁定等待超时;尝试重新启动事务 - While 语句
- scala - 如何在本地模式下正确等待 Spark 的终止?
- firebase - 在 Firebase 中使用 Cloud 函数访问文件的旧版本
- swift - 向多页 PDF 添加单个注释