8.53 반사 에서 인 터 페 이 스 를 사용한다.
1.컴 파일 할 때 형식 검 사 를 할 수 없습니다.
2.반사 코드 가 복잡 하 다
3.성능 이 낮 아 정상 적 인 방법 보다 2-50 배 낮 을 수 있 습 니 다.
반 사 된 클래스 가 부모 클래스 를 계승 하거나 인 터 페 이 스 를 실현 하면 인터페이스/부모 클래스 형식 으로 이 반사 클래스 를 참조 한 다음 에 관련 방법 을 호출 할 수 있 습 니 다.다음 코드 는 Array List 대상 의 add()를 반사 적 으로 호출 할 수 있 습 니 다.
@Test
public void doByReflection() throws Exception{
Class> clazz=Class.forName("java.util.ArrayList");
Object list= clazz.newInstance();
Method addMethod=clazz.getMethod("add", Object.class);
for(int i=0;i<10000;i++)
addMethod.invoke(list, i);
Integer size=(Integer) clazz.getMethod("size").invoke(list);
Assert.assertEquals(size, Integer.valueOf(10000));
}
다음 코드 는 List 인 터 페 이 스 를 통 해 ArrayList 대상 의 add()방법 을 호출 했다.
@Test
public void doByNormal() throws Exception{
Class> clazz=Class.forName("java.util.ArrayList");
List list=(List) clazz.newInstance();
for(int i=0;i<10000;i++)
list.add(i);
Assert.assertEquals(list.size(), 10000);
}
일반적으로 개발 도구 나 응용 도구 분석 시스템 이 가지 고 있 는 클래스 와 그들 이 지원 하 는 방법 을 반사 한다.정상 적 인 응용 시스템 에 서 는 반사 생 성 대상 이나 호출 대상 방법 을 사용 하 는 것 을 피해 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바를 잡아버려 (1)나의 생각을 적고 복습을 해버릴 것 이다 책을 펼치자 마자 나오는 설명인데 그 안의 내용을 실행하게 된다 라고 설명을 해준다 아래 소스코드와 실행 결과로 위에 설명을 보충해준다 사칙연산과 나머지를 계산하는 것 비교연...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.