Introduction
Reflection: load new class at runtime. Reflection is the foundation for building Dependency Injection.
Check class attributes, e.g. check the methods inside a class, annotations.
When a program is running, Java runtime maintains information that maps objects to its class file. When objects need to call methods, it loads them from the class files.
Field, Method, Constructor -- 3 important classes in the java.lang.reflect package.