리플렉션의 뜻은 반사입니다. 우리가 거울을 보면서 오늘의 스타일은 어떤지, 머리에 뭐 묻은것은 없는지 확인하는 것처럼 자바에서 리플렉션은 JVM의 클래스로더(거울에 해당)를 확인해 그 클래스의 생성자는 어떤건지, 메서드나 필드는 무엇이 있는지를 확인할 수 있습니다.
먼저 Class.forName("") 을 통해 해당 경로와 대응하는 클래스를 찾습니다.
Class<?> c = Class.forName("className");
그 후 .getConstructor() 를 통해 생성자를 생성합니다.
Constructor<?> constructor = c.getConstructor();
이후, .newInstance() 를 통해 인스턴스를 얻습니다.
Object ob = constructor.new Instance();
이후 만들어진 ob 인스턴스를 활용하면 된다.
getConstructor()와 getDeclearConstructor()의 차이점은 getConstructor()는 public으로 선언된 생성자에 접근하지만 getDeclearConstructor()는 모든 생성자에 접근합니다.