Java 반사 인식(Reflection)

1807 단어 reflection
JAVA 반사 메커니즘 정의:
JAVA 반사 메커니즘은 운행 상태에서 임의의 클래스에 대해 이 클래스의 모든 속성과 방법을 알 수 있다.임의의 대상에 대해 임의의 방법과 속성을 호출할 수 있다.이런 동적으로 얻은 정보와 동적 호출 대상의 방법의 기능을 자바 언어의 반사 메커니즘이라고 한다.
자바 반사 메커니즘은 주로 다음과 같은 기능을 제공한다. 실행할 때 임의의 대상이 속한 클래스를 판단한다.운행할 때 임의의 종류의 대상을 구성한다.운행 시 임의의 클래스가 가지고 있는 구성원 변수와 방법을 판단한다.실행할 때 임의의 대상을 호출하는 방법;동적 프록시를 생성합니다.
동적 언어:
"프로그램이 실행될 때 프로그램 구조나 변수 유형을 변경할 수 있는데 이런 언어를 동적 언어라고 부른다."이 관점에서 볼 때 Perl, Python, Ruby는 동적 언어이고 C++, 자바, C#는 동적 언어가 아니며 자바는 동적 언어가 아니다.
Java의 반사 메커니즘은 Java에게 매우 중요하다. 앞으로의 학습이나 개발에서 자주 볼 수 있을 것이다. 다음은 반사 학습을 시작할 때 쓴 실례이다.
import java.lang.reflect.Method;

public class InvokeTest {

	/**
	 * @param args
	 *             , 
	 */
	public static void main(String[] args) throws Exception {
		//  add echo new , , 
		Class<?> classType = InvokeTest.class;
		Object invokeTest =  classType.newInstance();
		
		System.out.println(" invokeTest InvokeTest:"+(invokeTest instanceof InvokeTest));
		
		// 
		Method method1 = classType.getMethod("add", new Class[]{int.class,int.class});
		Object result = method1.invoke(invokeTest, new Object[]{100,1000});
		System.out.println(result);

		Method method2 = classType.getMethod("echo",new Class[]{String.class});
		Object result2 =  method2.invoke(invokeTest, new Object[]{" is me."});
		System.out.println(result2);
	}

	public int add(int a, int b) {
		return a + b;
	}

	public String echo(String string) {
		return "dylan" + string;
	}
}

프로그램 실행 결과:
invokeTest의 유형이 InvokeTest:true인지 테스트하기
1100
dylan is me.
생각: 자바는 몇 가지 대상을 만드는 방법이 있습니까?

좋은 웹페이지 즐겨찾기