여러가지 기본적인 java.lang 패키지의 클래스를 공부해보자.
ㅇClass 클래스 <<요거를 보자
Class 클래스
자바는 Class 클래스에서 클래스와 인터페이스의 메타 데이터를 관리한다.
(메타 데이터: 클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보)
ㅡㅡㅡㅡ
자바API문서 둘러보기
Class 클래스에는 필드랑 생성자는 없고, 메소드와 중첩 클래스가 있다.
와 그런데 메소드가 무진장 많다!!
ㅡㅡㅡㅡ
공부할 메소드는 다음과 같다.
ㅇgetClass(), forName() : Class 객체 정보 얻기
ㅇgetResource()
Class 객체 얻기 : getClass(), forName()
프로그램에서 Class 객체를 얻기 위한 방법은 다음 세 가지가 있다.
ㅇ클래스로부터 얻기
(객체 없이 클래스 이름만 가지고 Class 객체 얻기)
1. Class clazz = 클래스이름.class
2. Class class = Class.forName("패키지...클래스이름")
ㅇ객체로부터 얻기
3. Class class = 참조변수.getClass();
예) String 클래스의 Class객체를 얻어보자 1. Class clazz = String.class; 2. Class clazz = Class.forName("java.lang.String"); String str = "김자바" 3. Class clazz = str.getClass(); |
클래스 경로를 활용해서 리소스 절대 경로 얻기 : getResource()를 통해서
>>Class 객체는 '해당 클래스의 파일 경로 정보를 갖고 있다' --> 이 경로를 통해 '다른 리소스 파일' 예를 들면 이미지, xml, property 파일 등 경로를 얻을 수 있다. >> UI프로그램에서 많이 활용되는 방법이다.
한번 예시를 들어 확인해보자
Car클래스 있는 경로에 photo.jpg파일이 있다고 해보자
ㅇphoto1.jpg는 Car.class가 있는 경로에,
ㅇphoto2.jpg는 그 경로의 하위 폴더 images 안에
프로그램 실행 중 photo1.jpg, photo2.jpg의 절대 경로가 필요하면
Car.class를 기준으로 한 상대 경로를 이용해서 절대 경로를 얻을 수 있다.
String photo1Path = clazz.getResource("photo1.jpg").getPath();
String photo2Path = clazz.getResource("images/photo2.jpg").getPath();
이때 Car.class 경로는 bin 폴더에 있다. 소스파일 노노 클래스 파일 예스
확인문제 5
ㅠㅠ 복습 안하면 머리속에서 엉키고 끊어진다.
클래스 객체 얻는 방법 세 가지.. 희미해져서 다시 여기루 돌아왔다.
ㅇClass.forName() 메소드 또는 객체의 getClass()메소드로 객체를 얻을 수 있다.
<Class클래스니까 Class.forName()이다. forName()은 static 메소드라서 클래스명으로 접근)
ㅇ클래스명.class 로 Class객체를 얻을 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA] java.lang 패키지의 Wrapper 클래스 [ 포장클래스] (0) | 2020.07.25 |
---|---|
[JAVA] java.lang 패키지의 String 클래스 (0) | 2020.07.23 |
[JAVA] java.lang 패키지의 System클래스 (0) | 2020.07.23 |
[JAVA] java.lang 패키지의 Object클래스 (0) | 2020.07.22 |
[혼자 공부하는 자바] 7/21 11-1 [기본 API클래스] [java.lang 패키지] (0) | 2020.07.21 |