자바 에서 Class 대상 에 대한 상세 한 설명 과 클래스 이름.class,class.forName(),getClass()의 차이 점

3169 단어 Class.forName

Class 대상 의 생 성 방식 은 다음 과 같 습 니 다.
 
1.클래스 이름.class          설명: JVM 은 클래스 로 더 를 사용 하여 클래스 를 메모리 에 불 러 옵 니 다(전 제 는 클래스 가 메모리 에 불 러 오지 않 았 음).클래스 초기 화 작업 을 하지 않 습 니 다.Class 의 대상 으로 돌아 갑 니 다.
 
2.Class.forName("클래스 이름 문자열")  (주:클래스 이름 문자열 은 패키지 이름+클래스 이름) 설명:클래스 를 불 러 오고 클래스 의 정적 초기 화 를 하여 Class 의 대상 을 되 돌려 줍 니 다.
 
3.실례 대상.getClass() 설명:클래스 에 대해 정적 초기 화,비 정적 초기 화;인용 o 가 실 행 될 때 진정 으로 가리 키 는 대상(하위 대상 의 인용 은 부모 대상 의 인용 변수 에 부 여 될 수 있 기 때 문)에 속 하 는 클래스 의 대상 을 되 돌려 줍 니 다.
 
아래 절 차 를 통 해 클 라 스 대상 의 생 성 원 리 를 살 펴 보 자.
 
public class TestClass {

public  static void main(String[] args)

{



try {

//  .class



Class testTypeClass=TestClassType.class;



System.out.println("testTypeClass---"+testTypeClass);





//  Class.forName()



Class testTypeForName=Class.forName("TestClassType");        



System.out.println("testTypeForName---"+testTypeForName);





//  Object.getClass()



TestClassType testTypeGetClass= new TestClassType();



System.out.println("testTypeGetClass---"+testTypeGetClass.getClass());



 



} catch (ClassNotFoundException e) {



// TODO Auto-generated catch block



e.printStackTrace();



}

}



}



 class TestClassType{



//    



public TestClassType(){



System.out.println("----    ---");



}



//        



static{



System.out.println("---        ---");



}



//         



{



System.out.println("----         ---");



}        



}

 
테스트 결 과 는 다음 과 같다.
 
testTypeClass---class TestClassType
 
정적 매개 변수 초기 화
 
testTypeForName---class TestClassType
 
-비 정적 매개 변수 초기 화-
 
구조 함수
 
testTypeGetClass---class TestClassType
 
 
 
결과 에 따라 세 가지 생 성 된 클 라 스 대상 이 같은 것 으로 나 타 났 다.또한 프로그램 은'정적 매개 변수 초기 화'를 한 번 만 인쇄 합 니 다. 
 
정적 방법 속성 초기 화 는 클래스 를 불 러 올 때 초기 화 되 는 것 을 알 고 있 습 니 다.정적 방법 속성 이 초기 화 되 지 않 고 new 클래스 인 스 턴 스 대상 일 때 불 러 옵 니 다.
 
따라서 이 프로그램 은 세 가지 방식 으로 클 라 스 대상 을 생 성 하 는데 사실은 클 라 스 대상 이 하나 밖 에 없다 는 것 을 설명 한다.Class 대상 을 만 들 때 메모리 에 불 러 왔 는 지 여 부 를 먼저 판단 합 니 다.
 
그래서 클 라 스 대상 을 만 드 는 과정 은 다음 과 같다.
 
새로운 자바 클래스 를 만 들 때 JVM 은 클 라 스 대상 으로 컴 파일 하여 같은 이름 의 클 라 스 파일 에 저장 합 니 다.실행 할 때 이 클래스 의 대상 을 생 성 해 야 할 때 JVM 은 이러한 종류의 메모리 가 불 러 왔 는 지 확인 합 니 다.불 러 오지 않 으 면.class 파일 을 메모리 에 불 러 옵 니 다.불 러 오 면 class 파일 에 따라 인 스 턴 스 대상 을 생 성 합 니 다.
 

좋은 웹페이지 즐겨찾기