반성이란 무엇인가요?
반사에는 "역방향"이 있으므로 역과정이라는 의미입니다. 그럼 먼저 진행 과정이 어떤지 살펴보겠습니다.
클래스를 디자인하고 클래스를 객체로 인스턴스화하면 객체가 메서드나 속성을 호출하여 일부 기능을 구현합니다.
그럼 반성이란 무엇일까요?
아직도 위의 그림을 기억하실지 모르겠습니다. 제가 처음 자바를 접했을 때 배운 지식입니다. 내 자신의 이해는 이제 1을 알고 2를 추론한 다음 2를 통해 다른 정보를 얻는다는 것입니다. (이것은 단지 내 추측입니다. 그것이 사실인지 아닌지는 앞으로 연구가 필요합니다.)
실제 시나리오에 대한 비유는 다음과 같습니다.
你:妈妈,你知道剪刀在哪吗? 妈妈:我那天放针线的时候好像在针线盒里看到了,你去找找有没有。针线盒在客厅的茶几上。 你:好的。
그런 다음 "바느질 상자"를 "에서 파생했습니다. 바느질 상자", 그리고 "바느질 상자"에서 파생된 "재봉 상자" "가위"가 발견되었습니다.
우리의 생각은 클래스나 객체에서 클래스 클래스를 추론한 다음 클래스 클래스에서 클래스 정보를 얻는 것입니다.
더 혼란스러우신가요? 걱정하지 말고 아래를 내려다보세요.
바느질 상자 찾기 - 클래스 받기
먼저 클래스란 무엇인가요?
People 클래스가 p 클래스인 것처럼 Class 클래스는 People 클래스의 클래스입니다. Class 클래스는 p의 "할아버지"입니다.
이렇게 이해할 수 있습니다. java.lang.Class의 인스턴스 객체는 People이고 People의 인스턴스 객체는 p입니다. 우리의 아이디어는 People 클래스나 p 객체를 통해 Class 클래스를 얻은 다음 Class 클래스를 통해 속성, 메서드, 생성자 등과 같은 People 클래스 정보를 얻는 것입니다.
이제 Class 클래스가 무엇인지 알았으니, 클래스 클래스를 얻는 방법에 대해 알아보겠습니다.
Class 클래스를 찾는 세 가지 방법이 있습니다:
c1, c2, c3을 People 클래스의 "클래스 유형"이라고 한다는 점을 언급할 가치가 있습니다. 이제 알려진 조건을 요약합니다.
People: 클래스
p: object
c: 클래스 유형
가위 찾기 - People 클래스의 정보 가져오기
애플리케이션 1: 가져오기 class
의 모든 메소드 People 클래스를 얻는 메소드에서 ms는 루프를 통해 People 클래스 메소드를 저장하는 배열이며, 해당 이름, 매개변수 유형 및 반환 값을 레이어별로 가져옵니다.
마지막으로 메인 함수에서 직접 호출하면 됩니다
부분 결과는 다음과 같습니다.
애플리케이션 2: 클래스의 모든 속성 가져오기
The 호출 방법은 다음과 유사합니다.
실행 결과:
응용 프로그램 3: 클래스 생성자를 가져옵니다.
생성자는 유사하므로 다시 설명하지 않습니다.
애플리케이션 4: 클래스의 특정 메서드 가져오기
실행 결과는 다음과 같습니다. 두 가지 호출 방법의 결과는 동일합니다.
위는 개별 함수 목록일 뿐이며, 자세한 내용은 API 설명서에서 확인할 수 있습니다. //tool.oschina.net/apidocs/apidoc?api =jdk-zh
Reflection의 개념
글 마지막 부분에서 Reflection의 개념을 요약하고 생각은 숭고하다.
반성의 정의가 무엇인가요?
JAVA 리플렉션 메커니즘은 실행 중인 상태에서 모든 클래스에 대해 이 클래스의 모든 속성과 메서드를 알 수 있으며 이러한 종류의 동적 획득 및 호출을 호출할 수 있다는 것입니다. 객체 메소드 이 함수를 Java 언어의 반사 메커니즘이라고 합니다.
반성이 필요한가요?
"반사 메커니즘은 많은 Java 프레임워크의 초석입니다."
(1) xml 파일 또는 속성에 구성을 작성한 다음 xml의 내용 또는 Java 클래스의 속성을 구문 분석하고 문자열을 얻은 다음 리플렉션 메커니즘을 사용하여 특정 클래스의 클래스 인스턴스를 얻습니다. 이 문자열을 사용하면 매번 코드에 새로운 항목을 추가하거나 다른 작업을 수행할 필요 없이 동적으로 구성할 수 있습니다. 나중에 이를 변경하려는 경우 구성 파일을 직접 변경할 수 있으므로 코드 유지 관리가 매우 쉽습니다. 편리한.
(2) 때로는 특정 요구에 적응하기 위해 Java 클래스에서 다른 메서드를 직접 호출하는 것이 불가능할 수도 있습니다. 이 경우 리플렉션 메커니즘을 통해서도 달성할 수 있습니다.
반성의 단점?
반영된 코드가 일반 호출 코드보다 코드가 많고 성능도 느리다는 것을 코드에서도 볼 수 있으므로 반사 사용은 피해야 합니다. 이는 가위가 어디에 있는지 이미 알고 있다면 바늘과 실바느질 상자-가위의 경로를 거치지 않아도 되는 것과 같습니다.
반사 사용 기준은 무엇인가요?
반성 없이 완성할 수 있는 기능이라면 사용하지 않는 것이 가장 좋습니다.
php 중국어 웹사이트, 수많은 무료 Java 입문 튜토리얼, 온라인 학습을 환영합니다!
위 내용은 자바 리플렉션이 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!