반사
반사 : 클래스의 속성과 방법을 해당 클래스에 매핑하십시오.
반사의 기본 사용
수업 수업을 얻는 방법에는 세 가지가 있습니다.
API에 따라 쓰기 만하면 일반적인 과정은 다음과 같습니다.
메소드의 매개 변수 유형을 사용하여 메소드를 기반으로 메소드를 고유하게 식별하십시오.
배열의 반사
다음 예는 주로 몇 가지 요점을 보여줍니다.
public class Reflictest {public static void main (String [] args) {int [] a1 = new int [] {1,2,3}; int [] a2 = 새로운 int [5]; int [] [] a3 = new int [2] [3]; System.out.println (a1.getCrass () == a2.getClass ()); // true System.out.println (a1.getClass ()); // class [i system.out.println (a3.getClass ()); // class [[i system.out.println (a1.getClass ().) a3.getClass (). getSuperClass ()); // true system.out.println (a2.getClass (). getSuperClass ()); // 다음 문장은 컴파일하지 않습니다 : 오류 : (15, 42) java : java.lang.class <accupture <accupture < int []> 및 java.lang.class <capture#2, 총? int [] []> //system.out.println (a1.getClass () == agetClass ()); 객체 [] b3 = a3; // // // 다음 문장은 오류를 전달하지 않습니다. 문자열 s1 = "abc"; System.out.println (arrays.aslist (a1)); // [[i@1540e19d] system.out.println (arrays.aslist (s1)); // [abc]}}산출:
trueclass [iclass [[itrueclass java.lang.object [[i@1540e19d]] [ABC]
입력 : 해시 코드 및 메모리 누출 문제 Java API를 참조하십시오.
해당 계산에 참여하는 멤버 변수가 중간에 변경되면 후속 제거가 실패하여 메모리 누출이 발생합니다.
구성 파일로드
클래스 로더는 읽기 전용 구성 파일 클래스 이름을로드합니다 .class.getClassLoader (). getResourCeasStream (str);
클래스 이름 .class.getResourceasstream (STR)은 본질적으로 클래스 로더를 호출하고 있습니다. 소스 코드 인터셉트 (java.lang 패키지 아래의 클래스. 자바) :
public inputStream getResourCeasStream (문자열 이름) {name = resolvename (name); 클래스 로더 cl = getClassLoader0 (); if (cl == null) {// 시스템 클래스. return classLoader.getSystemResourceasStream (이름); } return cl.getResourceasStream (name);}Path Str와 관련하여, 쓰기 방법은 약간 특별합니다.
과거에는 Java 코드를 컴파일 할 때 일부 conf/ 폴더를 종속성에 추가하거나 소스 폴더로 표시해야했습니다. 분명히 XML 파일 이었지만 Java 소스 코드는 없었습니다. 여기에서 나는 그것이 구성 파일을로드하기 위해 반사를 사용했기 때문이라는 것을 알고 있습니다.
검사관 & Javabean
javabean의 속성 x : 자본화, 접두사 및 방법을 읽는 과정.
"x"-> "x"-> "getx"-> "methodgetx"
나는 그것을 현재 내성으로 직접 작동시키는 데 사용하지 않았으므로 더 이상 코드를 붙여 넣지 않을 것입니다. 핵심 클래스 만 첨부됩니다.
간단한 구현 : java.beans.propertydescriptor 클래스를 사용하십시오
문제 구현 : java.beans.introspector 클래스를 사용하여 GetBeanInfo 메소드의 반환 값을 가로 지르십시오.
Javabean에는 매개 변수가없는 생성자가 있어야합니다
Beanutils 툴킷 사용