アップキャストは、Javaで子供のフィールドの保全性を確保していますか?

HelloRacoon:

私はいくつかのエンティティを永続化するために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();

user3817206:
  • あなたは、エンティティオブジェクトにキャストして渡す必要はありません。
EntityClass entity = new EntityClass();
hibernateSession.persist(entity);

  • 限り、あなたのエンティティ・クラスが参照されているとして、それがガベージコレクションされません

  • スーパークラスにあなたのオブジェクトをキャストすると、元のフィールド/メソッドを削除していますが、唯一のスーパークラスで使用可能な唯一のアクセスフィールド/メソッドことはできません。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=394643&siteId=1