JAVA/자바의 클래스
Class클래스- 정보가져오기
김꾸꾸(하트)
2022. 11. 21. 19:24
class파일
정의
클래스나 인터페이스에 대한 변수, 메서드, 생성자 등의 정보가 들어있는 파일
특징
자바의 모든 클래스와 인터페이스는 컴파일을 하고 나면 class파일을 자동으로 생성
Class클래스
정의
컴파일된 class파일에 저장된 클래스나 인터페이스의 정보를 가져오는 데 사용하는 클래스
그니까 Class클래스를 통하여 해당 클래스의 정보를 알 수 있음
왜 사용하는 지?
- Class클래스를 통하여 해당 클래스의 정보를 알 수 있음.
- 사용하는 클래스가 정확히 어떤 자료형인지 모를 때 해당 클래스의 정보를 가져오고 싶을 때 사용
Class클래스를 선언하고 클래스의 정보를 가져오는 방법
1. Object클래스의 getClass()메서드 사용하기
String s = new String();
Class c = s.getClass();
getClass()메서드 특징
- 모든 클래스가 사용할 수 있는 메서드
- 이미 생성된 인스턴스 필요
2. 클래스 파일 이름을 Class변수에 직접 대입하기
Class c = String.Class;
특징
- 컴파일된 클래스 파일이 있다면 클래스 이름만으로 Class클래스 반환받음
3. Class.forName(”클래스 이름”)메서드 사용하기
Class c = Class.forName("java.lang.String");
ForName()메서드 특징
- 컴파일된 클래스 파일이 있다면 클래스 이름만으로 Class클래스 반환받음
Class클래스를 가져온 후 할 일
getName()메서드를 호출해서 클래스의 이름이 잘 출력되는 지 보기
System.out.println(변수명.getName());
- 새로운 인스턴스 생성 가능
- 해당 클래스가 어떤 메서드 , 멤버변수, 생성자가 있는 지 전부 알 수 있음
ClassNotFoundException
정의
forName()메서드에서 발생하는 예외를 처리한다는 뜻을 가짐
특징
이름과 일치하는 클래스가 없는 경우 ClassNotFoundException 발생함.
예제
person클래스 생성하기
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;
}
}
Person클래스의 Class클래스 가져오기
public class ClassTest {
public static void main(String[] args) throws ClassNotFoundException {
Person person = new Person();
Class pClass1 = person.getClass();//Object의 getClass()메서드 사용
System.out.println(pClass1.getClass());
Class pClass2 = Person.class;//직접 class파일 대입
System.out.println(pClass2.getClass());
Class pClass3 = Class.forName("패키지 이름.Person");//클래스 이름으로 가져오기
System.out.println(pClass3.getClass());
}
}
출처 - Do it! 자바 프로그래밍 입문 (박은종 선생님)
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=157852460