Reflection により、プログラムは クラス、メソッド、フィールドをランタイムで検査・操作 できます。コンパイル時に不明なものでも可能です。Annotations はコードにメタデータを付与し、ツールとフレームワークが(しばしば reflection 経由で)読み込んで動作を制御します。これら2つが Java フレームワークの「魔法」(Spring、JPA、JUnit)を支えています。
Reflection — ランタイム検査と呼び出し
Class<?> clazz = Class.forName();
(Field field : clazz.getDeclaredFields()) {
System.out.println(field.getName() + + field.getType());
}
(Method method : clazz.getDeclaredMethods()) {
System.out.println(method.getName());
}
clazz.getDeclaredConstructor().newInstance();
clazz.getMethod(, String.class);
m.invoke(instance, );
clazz.getDeclaredField();
f.setAccessible();
