본문 바로가기
old/Java

java.lang.Class

by 물 개 2020. 11. 16.

Class 클래스

클래스를 메모리로 로딩할 때 사용

메소드 설명
getClass().forName() getClass() 메소드를 사용하면 Class 객체를 얻을 수 있다.
단, 해당 클래스로 객체를 생성했을 때만 사용할 수 있다.

Class 클래스는 생성자를 감추고 있기 때문에 new 연산자로 객체를 만들 수 없고, 정적 메소드인 forName()을 이용해야한다.

forName() 메소드는 패키지가 포함된 클래스 전체 이름을 매개값으로 받고 Class 객체를 리턴한다.
매개값으로 주어진 클래스를 찾지 못하면 ClassNotFoundException을 발생시킨다
리플렉션(Reflection)
getDeclaredConstructors()
getDeclaredFields()
getDeclaredMethods()

Class 객체를 이용해서 클래스의 생성자, 필드, 메소드 정보를 알아내는 것을 리플렉션이라고 한다.
각각 Constructor 배열, Field 배열, Method 배열을 리턴한다.
클래스에 선언된 멤버만 가져오고 상속된 멤버는 가져오지 않는다.
상속된 멤버도 얻을 때는 getFields(), getMethods() 이용. (단 public 멤버만)

newInstance()
new 연산자를 사용하지 않고 동적으로 객체를 생성하는 메소드.
기본 생성자를 호출해서 객체를 생성하기 때문에 반드시 클래스에 기본 생성자가 존재해야 한다.
해당 클래스가 추상 클래스나 인터페이스 일 때 InstantiationException,
클래스나 생성자가 접근 제한자로 접근할 수 없을 때 IllegalAccessException을 발생시킨다.

코드 작성 시에 클래스 이름을 결정할 수 없고, 런타임 시에 클래스 이름이 결정되는 경우 매우 유용하다.
ex)
Class clazz = Class.forName("런타임 시 결정되는 클래스 이름");
Object obj = clazz.newInstance();

 

'old > Java' 카테고리의 다른 글

java.lang.StringBuffer/StringBuilder  (0) 2020.11.16
java.lang.String  (0) 2020.11.16
java.lang.System  (0) 2020.11.16
java.lang.Object  (0) 2020.11.16
java API 도큐먼트  (0) 2020.11.16

최근댓글

최근글

skin by © 2024 ttuttak