Hibernate はどのようにしてプライベート フィールドにアクセスできますか?
-
12-09-2019 - |
質問
@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と同様の反射をサポートしていると考えています所属していません StackOverflow