Java 반사 인식(Reflection)
1807 단어 reflection
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.
생각: 자바는 몇 가지 대상을 만드는 방법이 있습니까?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin 반사iOS(iOS 이상)와 안드로이드 응용 프로그램의 엔지니어. 반년은 주로 안드로이드였다. 나는 Oisix에서 일한다. Java 등 언어별 반사 기능을 갖춘 Kotlin 버전입니다. 클래스 구조 (예: 속성) 를 읽거...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.