1 Reflection
- Reflection이란 클래스로더를 통해 읽어온 클래스 정보를 사용하는 기술이다.
- 자바는 클래스와 인터페이스의 메타 데이터를 Class 클래스로 관리한다.
- 여기서 메타 데이터란 클래스의 이름, 생성자 정보, 메서드 정보 등을 의미한다.
- 리플렉션 기술을 사용하면 클래스나 메서드의 메타정보를 동적으로 획득하고, 코드도 동적으로 호출할 수 있다.
- 리플렉션은 런타임에 동작하는 기능입니다. 프로그램 실행 중에 클래스, 메소드, 필드 등의 메타데이터에 접근합니다.
2. Class 객체 얻기
- 자바는 클래스와 인터페이스의 메타 데이터를 Class객체로 관리하기 때문에 Reflection을 사용하기 위해서는 먼저 Class 객체를 얻어야 합니다.
- Class 객체를 얻는 방법에는 세 가지가 있습니다.
- Object.getClass() 사용
- 클래스 리터럴 사용
- Class.forName() 사용
2.1 Object.getClass()
- Object 클래스의 getClass() 메서드를 이용하면 해당 클래스의 Class 객체를 얻을 수 있습니다.
- getClass() 메서드는 해당 클래스의 객체가 있을 때 사용할 수 있습니다.
- 만약 객체를 생성하기 전에 Class 객체를 얻고 싶다면 Class의 static 메서드 forName을 이용하면 됩니다.