首页 > 解决方案 > 向上转换是否确保在 java 中保留孩子的字段?

问题描述

我将使用 Hibernate 来持久化一些实体。

EntityClass entity = new EntityClass();
Object obj = (Object) entity;
hibernateSession.persist(obj)

我可以确保保留原始 EntityClass 中的字段值吗?

垃圾收集器不清除字段值吗?

在所有其他情况下,我可以确保向上转换保留原始字段的值吗?

(其他不使用休眠的常见情况)

这是我的原始代码

Class<?> clazz = Class.forName(~~~); // from external file
Iterator<?> iterator = ((Iterator<?>) clazz.getConstructor(String.class).newInstance(~~~); // from external file

while (iterator.hasNext()) {
    for (JsonEntity content : (List<JsonEntity>) iterator.next()) {
        session.saveOrUpdate(content.toEntity());
    }
    session.flush();
}
transaction.commit();

标签: javacasting

解决方案


  • 您不需要强制转换并传递给实体对象。
EntityClass entity = new EntityClass();
hibernateSession.persist(entity);

  • 只要您的实体类被引用,它就不会是垃圾收集

  • 将您的对象转换为超类不会删除原始字段/方法,但您只能访问仅在超类中可用的字段/方法


推荐阅读