- 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성된다.
- class 파일에는 멤버변수, 메서드, 생성자 등 객체의 정보가 포함되어 있는데 Class 클래스는 이 class 파일에서 객체에 정보를 가져올 수 있다.
Class c1 = String.class;
String str = new String();
Class c2 = str.getClass();
Class c3 = Class.forName("java.lang.String");
- Class 클래스는 위와 같은 방법으로 불러올 수 있고 그 중에 forName을 통해 가져오는 방법이 많이 사용되고 이를 동적 로딩이라고 부른다.
- 동적 로딩이라고 부르는 이유는 보통 다른 클래스 파일을 불러올 때는 컴파일 시 스태틱에 그 클래스 파일이 같이 바인딩이 되지만 forName으로 class파일을 불러올 때는 컴파일에 바인딩이 되지않고 런타임때 불러오게 되기 때문이다.
- 즉, 실행시에 불러서 사용할 수 있기 때문에 동적 로딩이라고 부르게 된다.
- 단점은 클래스파일명을 직접 적게 되어 있어 만약 파일명에 오타가 나면 에러가 발생할 수 있기 때문에 주의 해야 한다.
public static void main(String[] args) throws ClassNotFoundException {
Class c1 = String.class;
String str = new String();
Class c2 = str.getClass();
Class c3 = Class.forName("java.lang.String");
Constructor[] cons = c3.getConstructors();
for(Constructor con: cons) {
System.out.println(con);
}
System.out.println();
Method[] methods = c3.getMethods();
for(Method method : methods) {
System.out.println(method);
}
}
- Constructor와 Method를 모를 때 위와 같은 방식으로 모든 Construct와 Method를 출력시킬 수 있다.
728x90
'Programming > JAVA' 카테고리의 다른 글
JAVA - Optional (0) | 2023.06.05 |
---|---|
JAVA - Reflection API (0) | 2023.06.01 |
JAVA - 람다 (기본) (0) | 2023.05.18 |
JAVA - 컬렉션 프레임 워크 (Collections Framework), List, Set, Map ... (1) 그 중 List (0) | 2023.05.18 |
JAVA - Reflection (1) | 2023.05.14 |