Hibernate はどのようにしてプライベート フィールドにアクセスできますか?

StackOverflow https://stackoverflow.com/questions/1113359

質問

@Id を設定するなど、Hibernate は Java クラスのプライベート フィールド/メソッドにどのようにアクセスできますか?

ありがとう

役に立ちましたか?

解決

Crippledsmurf が言うように、それは反射を使用します。見る 反射:あらゆるルールを破る そして 休止状態:オブジェクトのコントラクトの保持.

他のヒント

試してみてください。

import java.lang.reflect.Field;

class Test {
   private final int value;
   Test(int value) { this.value = value; }
   public String toString() { return "" + value; }
}

public class Main {
   public static void main(String... args) throws NoSuchFieldException, IllegalAccessException {
       Test test = new Test(12345);
       System.out.println("test= "+test);

       Field value = Test.class.getDeclaredField("value");
       value.setAccessible(true);
       System.out.println("test.value= "+value.get(test));
       value.set(test, 99999);
       System.out.println("test= "+test);
       System.out.println("test.value= "+value.get(test));
   }
}

プリント

test= 12345
test.value= 12345
test= 99999
test.value= 99999

の推測では、私は、これはターゲット・タイプに反映し、直接反射を使用してフィールドを設定することによって行われていると言うでしょう。

私は、Javaプログラマではないが、私は、Javaが、私は

を使用します.NETと同様の反射をサポートしていると考えています
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top