: 클래스와 인터페이스의 메타 데이터를
java.lang 패키지에 소속된 Class 클래스로 관리함
1) 클래스로부터 얻는 방법
① Class clazz = 클래스이름.class
② Class clazz = Class.forName("패키지. . .클래스이름")
→ 객체 없이 클래스 이름만 가지고
Class객체를 얻는 방법
2) 객체로부터 얻는 방법
③ Class clazz = 참조변수.getClass();
→ 클래스로부터 객체가 이미 생성되어 있을 경우에
사용하는방법
ex)
String 클래스의 Class 객체 얻기
① Class clazz = String.class;
② Class clazz = Class.forName("java.lang.String");
String str = "감자바";
③ Class clazz = str.getClass();
import sec06.exam06.Car;
public class ClassExample {
public static void main(String[] args) {
//첫 번째 방법
Class clazz = Car.class;
//두 번째 방법
//Class clazz = Class.forName("sec06.exam06.Car");
//세 번째 방법
//Car car = new Car();
//Class clazz = car.getClass();
System.out.println(clazz.getName());
System.out.println(clazz.getSimpleName());
System.out.println(clazz.getPackage().getName());
}
}
💻 결과
sec06.exam06.Car
Car
sec06.exam06
: Class 객체는 해당 클래스의 파일 경로 정보를 가지고 있기 때문에
이 경로를 활용해서 다른 리소스 파일(이미지, XML, Property 파일)의
경로를 얻을 수 있음
→ 이 방법은 UI 프로그램에서 많이 활용됨
ex)
Car 클래스가 위치하는 경로에 photo.jpg파일이 있다고 가정
파일
C:\SelfJavaStudy\chap11\bin\sec01
| - exam09
| - Car.class
| - photo1.jpg
| - images
| - photo2.jpg
- 프로그램 실행 중 이미지 파일(photo1.jpg, photo2.jpg)의
절대 경로가 필요할 경우에 Car.class를 기준으로
한 상대 경로를 이용해서 절대 경로를 얻을 수 있음
String photo1Path = clazz.getResource("photo1.jpg").getPath();
String photo2Path = clazz.getResource("images/photo2.jpg").getPath();