L'introspection (reflection) permet à un programme Java de découvrir dynamiquement des informations sur une classe.
Ainsi, les champs, constructeurs, méthodes et autres caractéristiques d'une classe peuvent être livrés sans connaissance préalable du code source d'une classe.
Ce mécanisme introspectif est généralement utilisé par des outils de développement IDE (Integrated Development Environnement). Par exemple, les interpréteurs et inspecteurs d'objets de ces applications s'appuient largement sur cette technique.
Les classes nécessaires à l'introspection sont contenues dans les paquetages java.lang et java.lang.reflect.