소개
먼저, 덜 실용적인 설명을 소개하겠습니다. Java 반사 메커니즘은 실행중인 상태에서 모든 클래스의 경우이 클래스의 모든 속성과 방법을 알 수 있다는 것입니다. 모든 객체의 경우 모든 방법과 속성을 호출 할 수 있습니다. 정보를 동적으로 얻고 동적으로 호출하는 객체 방법을 Java 언어의 반사 메커니즘이라고합니다.
간단한 사용
반사는 Java에서 매우 일반적이고 사용하기 쉬운 방법입니다 (그러나 효율성이 상대적으로 낮다는 것을 알아야하므로주의해서 사용해야합니다) 물론 Java 언어를 기반으로 Android에서도 사용할 수 있습니다. 우리는 반사를 사용하여 개방적이지 않고 실재하는 일부 클래스를 얻을 수있어 일부 방법을 호출 할 수 있습니다. Java Reflection을 사용하여 클래스와이를 호출하는 방법의 구현을 사용하여 아래에 간단히 적어 봅시다.
// 반사 문자열 className = "com.example.test.javareflect"; 클래스 반사 = null; try {// java class recriber = class.forname (className); // 해당 클래스 객체를 인스턴스화합니다 javareflect = recil.newinstance (); if (null! = javareflect) {// 클래스 클래스의 stringtoup () 메소드를 반사하는 stringtoup은 메소드 이름이고 string.class는 매개 변수 유형 method = recriber.getDeclaredMethod ( "StringToup", String.class); // 개인 메소드 액세스의 합법성 검사를 취소 stringtoup.setAccessible (true); // stringToup () 메소드 계산, 첫 번째 매개 변수는 해당 클래스를 나타내고, 두 번째 매개 변수는 method str = (string) StringToup.inVoke (javareFlect, "Java Recelf Test")의 매개 변수입니다. System.out.println ( "결과 :"+str); }} catch (예외 e) {e.printstacktrace ();} StringToup에서 내가 한 일을 살펴 보겠습니다.
public String StringToup (String str) {return str.toupperCase ();}실제로, 그것을 자본으로 변환 한 다음 반환하는 것은 단지 문자열 일뿐입니다. 좋아, 출력 결과를 살펴 보자.
01-02 08 : 09 : 11.959 6150-6150/com.zxf.alpha I/System.out : 결과 : Java는 테스트를 반영합니다
그것은 단순히 완벽합니다.
요약
좋아요, 위는이 기사에 관한 것입니다. 반사에는 Android에 많은 응용 프로그램이 있습니다. 예를 들어, 프로젝트에 여러 모듈이있는 경우 모듈에서 기본 프로그램의 메소드를 호출하려면이 작업을 수행하거나 반사를 사용하여 일부 시스템-공공 방법을 호출 할 수 있지만 효율은 그리 높지 않습니다. 이 기사의 내용이 모든 사람이 Java에서 방사선을 배우거나 사용하는 데 도움이되기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다.