রিফ্লেকশন একটি প্রোগ্রামকে রানটাইমে ক্লাস, মেথড এবং ফিল্ডস ইন্সপেক্ট এবং ম্যানিপুলেট করতে দেয় — এমনকি কম্পাইল সময়ে অজানা ক্লাসগুলোতেও। অ্যানোটেশন কোডে মেটাডেটা সংযুক্ত করে যা টুলস এবং ফ্রেমওয়ার্কগুলি পড়ে (প্রায়শই রিফ্লেকশনের মাধ্যমে) আচরণ চালনা করতে। একসাথে তারা Java-এর ফ্রেমওয়ার্ক "ম্যাজিক"-এর বেশিরভাগ অংশ শক্তিশালী করে (Spring, JPA, JUnit)।
রিফ্লেকশন — রানটাইম ইন্সপেকশন এবং ইনভোকেশন
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();
