રિફ્લેક્શન એક પ્રોગ્રામને રનટાઇમ સમયે ક્લાસ, મેથોડ્સ, અને ફીલ્ડ્સને ઇન્સ્પેક્ટ અને મેનીપુલેટ કરવા દે છે — તેમ છતાં કમ્પાઇલ ટાઇમ સમયે અજ્ઞાત હોય તોપણ. એનોટેશન્સ કોડને મેટાડેટા જોડે છે જે ટૂલ્સ અને ફ્રેમવર્ક્સ વાંચે છે (ઘણીવાર રિફ્લેક્શન દ્વારા) તેમનું વર્તન ચલાવવા માટે. એક સાથે તેઓ 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();
