반사-소기

2341 단어
리플렉스
1. 반사 메커니즘의 정의
실행할 때 불러오고, 탐지하고, 컴파일하는 동안 완전히 알 수 없는 클래스를 가리킨다.
1. 프로그램은 운행 상태에서 이름만 있는 클래스를 동적으로 불러올 수 있으며 이미 불러온 클래스에 대해 이 클래스의 모든 속성과 방법을 알 수 있다.임의의 대상에 대해 그의 임의의 방법과 속성을 호출할 수 있다.
2. 클래스를 불러온 후에 메모리에 하나의 클래스 유형의 대상(하나의 클래스는 하나의 클래스 대상)이 생성된다. 이 대상은 완전한 클래스의 구조 정보를 포함하고 이 클래스의 대상은 마치 거울과 같다. 이 거울을 통해 클래스의 구조를 보면 반사라고 부른다.
둘째, 반사에는 어떤 장점과 단점이 있는가
장점: 1, 클래스와 클래스 간의 관계를 낮출 수 있음 2, 컴파일할 때의 검사를 실행할 때로 늦출 수 있음
단점: 1, 성능 효율이 높지 않고 코드의 유지보수성이 떨어진다
셋째, 반사 사용 방법
1, 반사 입구 클래스를 획득하는 세 가지 방법
①, 대상의 getClass() 방법;
Class class1=Object.getClass();
②, 종류.class(가장 안전/성능이 좋은) 속성;
Object obj=new Object();

Class class2=obj.class;

③, Class를 활용한다.forName(String className) 동적 로드 클래스, className은 클래스의 전체 이름 지정이 필요합니다.
 Class class3=Class.forname( );

2, 구성원 변수 획득 위에서 반사되는 세 번째 방식을 예로 들면 ①, 본 유형의 모든 구성원 변수 획득(임의의 제한)
 1, , Field 
 Field[] fields=class3.getDeclaredFields();
 2, , Field
 Field field=class3.getDeclaredField( );

②, 이 클래스 및 부류의public 수식의 구성원 변수 가져오기
 1, , Field 
 Field[] fields=class3.getFields();、
 2, , Field
 Field field=class3.getField( );

3, 구조 방법 획득
①, 본 유형의 모든 구조 방법을 획득(임의의 제한)
 1, , Constructor 
 Constructor[] constructors=class3.getDeclaredConstructors();
 2, , Constructor
 Constructor constructor=class3.getDeclaredConstructor( .class);

②, 본 클래스 및 부류의public 수식 구조를 획득하는 방법
  1, , Constructor 
 Constructor[] constructors=class3.getConstructors();
 2, , Constructor
 Constructor constructor=class3.getConstructor( .class);

4, 구성원 획득 방법 ①, 이 클래스의 모든 구성원 획득 방법(임의의 제한)
 1, , Method 
 Method[] methods=class3.getDeclaredMethods();
 2, , Method
 Method method=class3.getDeclaredMethod( .class);

②, 본 클래스 및 부류의public 수식 멤버를 획득하는 방법
  1, , Method 
 Method[] methods=class3.getMethods();
 2, , Method
 Method method=class3.getMethod( .class);

5, 반사된 형태로 객체 만들기
  .newInstance( , )

1, 속성 값 수정
①, , 
②, 
field.setAccessible(true);
③, 
field.set(.newInstance,"  ")\

2, 방법의 호출
①, , 
②, 
method.setAccessible(true);
③, 
method.invoke(.newInstance);

좋은 웹페이지 즐겨찾기