java - 向上转换是否确保在 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();
解决方案
- 您不需要强制转换并传递给实体对象。
EntityClass entity = new EntityClass();
hibernateSession.persist(entity);
只要您的实体类被引用,它就不会是垃圾收集
将您的对象转换为超类不会删除原始字段/方法,但您只能访问仅在超类中可用的字段/方法
推荐阅读
- apache - 使用 Debian 10 在 Apache 中设置默认虚拟主机
- c# - 使用 Pythonnet 如何调用具有 ref 和 out 参数的 C# 方法?
- python - 如何使用绘图破折号摆脱数据框索引名称
- api - 当我在 openweathermap API 中请求历史 API 时,它会引发 api 密钥错误
- c++ - libcurl发送http请求,接收到的数据有问题
- android - Firebase Crashlytics 无法识别我的应用
- c - C将char数组传递给函数和指针
- tailwind-css - Tailwind 不会清除获取的 MDX 类
- ros - 如何从螺旋桨旋转信号中获取里程计,知道它们可以旋转到最大值并在该旋转中保持不变
- azure - 使用旧版本 NPM 运行的 azure 应用服务