초보 학 자바-자바 반사 메커니즘(1)

4512 단어 Java
반사 하면 프로 그래 밍 경험 이 있 는 사람 은 낯 설 지 않 을 것 이 라 고 믿는다.반사 메커니즘 은 자 바 를 더욱 유연 하 게 한다.반사 메커니즘 은 자바 의 많은 특성 중에서 매우 중요 한 것 이다.다음은 그것 이 어떻게 된 일 인지 조금씩 알 아 보 자.
 
반사
실행 상태 에서 임의의 클래스 에 대해 이 클래스 의 모든 속성 과 방법 을 알 수 있 습 니 다.임의의 대상 에 대해 서 는 임의의 방법 과 속성 을 호출 할 수 있 습 니 다.이러한 동적 으로 얻 은 정보 와 동적 호출 대상 의 방법 을 자바 언어의 반사 메커니즘 이 라 고 한다.
 
반사 하면 뭐 해?
1.실행 할 때 임의의 대상 이 속 한 종 류 를 판단 한다.
2.운행 할 때 임의의 유형의 대상 을 구성한다.
3.실행 할 때 임의의 클래스 가 가지 고 있 는 구성원 변수 와 방법 을 판단 합 니 다.
4.실행 할 때 임의의 대상 을 호출 하 는 방법;
5,동적 에이전트 생 성.
 
반사 API
하나의 언어 를 배 우 는 가장 좋 은 방법 은 API 문 서 를 보 는 것 이다.왜냐하면 API 는 가장 권위 적 이 고 정확 하기 때문이다.JDK 의 API 가 반사 에 대해 어떻게 설명 하 는 지 살 펴 보 겠 습 니 다!
 
반사 와 관련 된 모든 인터페이스 와 클래스 는 java.lang.reflect 패키지 에 있 습 니 다.
 
인터페이스
인터페이스 요약
AnnotatedElement
현재 이 VM 에서 실행 중인 프로그램의 주석 요 소 를 표시 합 니 다.
GenericArrayType
GenericArrayType 배열 형식 을 표시 합 니 다.구성 요소 형식 은 매개 변수 화 형식 이나 형식 변수 입 니 다.
GenericDeclaration
형식 변 수 를 설명 하 는 모든 실체의 공공 인터페이스 입 니 다.
InvocationHandler
InvocationHandler 프 록 시 인 스 턴 스 호출 처리 프로그램 입 니 다. 실현 의 인터페이스.
Member
구성원 은 하나의 인터페이스 로 하나의 구성원(필드 나 방법)이나 구조 방법 에 관 한 표지 정 보 를 나타 낸다.
ParameterizedType
Parameterized Type 은 Collection 과 같은 매개 변수 화 유형 을 표시 합 니 다.
Type
Type 은 자바 프로 그래 밍 언어 에서 모든 유형의 공공 고급 인터페이스 입 니 다.
TypeVariable
TypeVariable 은 각종 유형의 변수의 공공 고급 인터페이스 입 니 다.
WildcardType
Wildcard Type 은 마스크 형식 표현 식 을 표시 합 니 다.예 를 들 어 ?、? extends Number 혹시 ? super Integer。
 
종류
클래스 요약
AccessibleObject
AccessibleObject 류 는 Field,Method,Constructor 대상 의 기본 클래스 입 니 다.
Array
Array 클래스 는 자바 배열 을 동적 으로 만 들 고 접근 하 는 방법 을 제공 합 니 다.
Constructor
Constructor 클래스 의 단일 구조 방법 에 대한 정보 와 접근 권한 을 제공 합 니 다.
Field
Field 클래스 나 인터페이스의 단일 필드 에 대한 정보 와 동적 접근 권한 을 제공 합 니 다.
Method
Method 클래스 나 인터페이스 에 있 는 단독 방법(그리고 이 방법 에 어떻게 접근 하 는 지)에 대한 정 보 를 제공 합 니 다.
Modifier
Modifier 클래스 가 제공 합 니 다. static 방법 과 상수,클래스 와 구성원 방문 수정자 에 대해 디 코딩 합 니 다.
Proxy
Proxy 동적 프 록 시 클래스 와 인 스 턴 스 를 만 드 는 정적 방법 을 제공 합 니 다.이 방법 으로 만 든 모든 동적 프 록 시 클래스 의 초 클래스 입 니 다.
ReflectPermission
반사 조작의 Permission 클래스.
 
 
 
다음은 여러분 에 게 작은 실례 를 하나 쓰 겠 습 니 다.
package reflection;

public class UserInfo {
	
	private Integer id;
	private String userName;
	private String password;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	@Override
	public String toString(){
		return this.getClass().getName();
	}
	
}

 
package reflection;

public class GetClass {

	public boolean ClassCheck(){
		try {
			
			System.out.println("   ,         ");
			Class UserClass = this.getClass();
			System.out.println("       !  :"+UserClass.toString()+"
"); System.out.println(" , "); UserInfo ui = new UserInfo(); UserClass = ui.getClass(); Class SubUserClass = UserClass.getSuperclass(); System.out.println(" ! :"+SubUserClass.toString()+"
"); System.out.println(" , .class "); Class ForClass = reflection.UserInfo.class; System.out.println(" ! :"+ForClass.toString()+"
"); System.out.println(" , "); Class ForName = Class.forName("reflection.UserInfo"); System.out.println(" ! :"+ForName.toString()+"
"); } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override public String toString(){ return this.getClass().getName(); } public static void main(String[] args) { GetClass gc = new GetClass(); gc.ClassCheck(); if (gc.ClassCheck()) { System.out.println(" !"); } else { System.out.println(" , !"); } } }

 
위의 네 가지 방법 중에서 제 가 가장 많이 사용 하 는 것 은 네 번 째 입 니 다.이런 것 은 보통 설정 파일 과 함께 사용 합 니 다.반사 와 프로필 의 결합 은 우리 의 코드 를 매우 유연 하 게 만 들 고 확장 하기 쉬 우 며 유지 하기 쉽다.좋 은 점 이 많다 고 할 수 있 습 니 다.그래서'반사 반사,프로그래머 의 즐거움!'함께 마음껏 즐 기세 요!
 
 
PS:다음 편 은 실례 를 결합 하여 더욱 상세 한 설명 을 할 것 입 니 다!초보 학 프로 그래 밍(10)-자바 반사 메커니즘(2)
 
 

좋은 웹페이지 즐겨찾기