자바의 모든 클래스와 인터페이스는 컴파일되고 나면 class 파일로 생성됩니다.
class 파일에는 클래스나 인터페이스에 대한 변수, 메소드, 생성자 등의 정보가 들어 있습니다.
Class 클래스는 컴파일된 class 파일에 저장된 클래스나 인터페이스 정보를 가져오는데 사용 합니다.
예를 들어, 모르는 클래스의 정보를 사용할 경우 직접 클래스의 정보를 찾아야 하는데 이때 Class 클래스를 활용하면 됩니다.
Class 클래스를 선언하고 클래스 정보를 가져오는 방법은 아래의 세 가지 방법이 있습니다.
String s = new String();
Class c = s.getClass(); //getClass() 메소드의 반환형은 Class
Class c = String.class;
Class c = Class.forName("java.lang.String");
public class Person {
private String name;
private int age;
public Person() {}
public Person(String name) {
this.name = name;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public static void main(String[] args) throws ClassNotFoundException {
Person person = new Person();
Class pCls1 = person.getClass(); // Object 의 getClass() 메소드 사용하기
System.out.println(pCls1.getName());
Class pCls2 = Person.class; // 직접 class 대입하기
System.out.println(pCls2.getName());
Class pCls3 = Class.forName("Class클래스.Person"); // ClassNotFoundException 필요
System.out.println(pCls3.getName());
}