Reflection: kiểm tra và thao tác class, method, field lúc runtime. API: Class.forName(), getDeclaredMethods(), getDeclaredFields(), invoke().
Ví dụ: Method m = Class.forName("pkg.ClassName").getMethod("methodName"); m.invoke(obj, args); Use cases: frameworks (DI, ORM), testing (mocking), annotation processing, dynamic proxy.
Lợi ích: linh hoạt cực cao. Chi phí: overhead hiệu năng, mất type safety, code phức tạp. Tránh dùng trong code quan trọng về performance. Hiện đại: bytecode generation (CGLIB) hoặc APT thường tốt hơn.