Programming/JAVA

JAVA - Class 클래스

잇(IT) 2023. 5. 14. 17:29

- 자바의 모든 클래스와 인터페이스는 컴파일 후 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