[자바 기반 다 지기](4)자바 반사 체 제 를 훑 는 데 시간 이 좀 걸 립 니 다.
앞에서 말 했 듯 이 자바 SE 를 공부 하면 서 자바-반사 체 제 를 정리 했다.이것 은 자바 에서 매우 중요 한 지식 이다.면접 과 개발 에서 도 자주 접 할 수 있다.면접 관 에 게 매 달 린 찌꺼기 로 서 외 롭 고 견 디 기 어 려 운 밤 에 마음 을 가 라 앉 히 고 시 리 즈 를 쓰기 로 결정 했다.어린이 들 이 기 초 를 다 지 는 데 도움 을 주 고 쉬 운 것 에서 어 려 운 것 까지흉악 한 면접 관 을 매달다.
반사 란 무엇 입 니까?
반 사 는 운행 상태 에서 임의의 종류 에 대해 이 종류의 모든 속성 과 방법 을 알 수 있다.임의의 대상 에 대해 서 는 임의의 방법 과 속성 을 호출 할 수 있 습 니 다.이러한 동적 으로 얻 은 정보 와 동적 호출 대상 의 방법 을 자바 언어의 반사 메커니즘 이 라 고 한다.
반사 메커니즘 은 어디 에 쓰 입 니까?
JDBC 에 서 는 데이터베이스 드라이버 를 반사 동 태 를 이용 해 불 러 왔 다.웹 서버 에 서 는 Sevlet 의 서비스 방법 을 반사 적 으로 호출 했다.Eclispe 등 개발 도 구 는 반사 동적 으로 대상 의 유형 과 구 조 를 분석 하고 동적 으로 대상 의 속성 과 방법 을 제시 합 니 다.많은 프레임 워 크 는 반사 메커니즘,주입 속성,호출 방법,예 를 들 어 Spring 을 사용한다.
대상 서열 화 란 무엇 입 니까?반 서열 화 는 무엇 입 니까?대상 서열 화 를 실현 하려 면 어떤 일 을 해 야 합 니까?
대상 직렬 화:대상 의 데 이 터 를 바이트 시퀀스 로 인 코딩 하 는 과정.
serializable
인 터 페 이 스 를 실현 하 다.역 직렬 화:대상 의 인 코딩 바이트 를 다시 디 코딩 대상 으로 하 는 과정.JAVA 는 API 가 대상 의 직렬 화 와 역 직렬 화 를 실현 하 는 기능 을 제공 합 니 다.이 API 를 사용 할 때 다음 과 같은 약속 을 지 켜 야 합 니 다.
serializable
을 실현 해 야 한다.이 인 터 페 이 스 는 표지 인터페이스 로 추상 적 인 방법 을 밝 히 지 않 았 다.JAVA 컴 파일 러 는 이 인 터 페 이 스 를 식별 하고 자동 으로 직렬 화 와 반 직렬 화 방법 을 추가 해 야 한다.다음 경우 자바 직렬 화 를 사용 해 야 합 니 다.
반사 메커니즘 의 장단 점?(!)
장점:동적 으로 실행 할 수 있 고 운영 기간 에 업무 기능 의 동적 집행 방법,방문 속성 에 따라 자바 의 유연성 을 최대한 발휘 했다.단점:성능 에 영향 을 줍 니 다.이런 조작 은 자바 코드 를 직접 실행 하 는 것 보다 느 립 니 다.
동적 에이전트 가 뭐 예요?어떤 응용 프로그램 이 있 습 니까?
동적 에이 전 트 는 실행 시 동적 생 성 에이전트 클래스(에이전트 방법)입 니 다.동적 에이전트 의 응용 은 Spring AOP 데이터 조회,테스트 프레임 의 백 엔 드 mock,rpc,자바 주석 대상 획득 등 이 있 습 니 다.
어떻게 동적 대 리 를 실현 합 니까?
JDK 원생 동적 에이전트 와
cglib
동적 에이전트(알 아야 함).JDK 원생 동적 대 리 는 인 터 페 이 스 를 바탕 으로 이 루어 졌 고 cglib 는 현재 클래스 를 계승 하 는 하위 클래스 를 바탕 으로 이 루어 졌 다.자바 반사 메커니즘 의 역할
Class.forName(“ ”); :com.mysql.jdbc.Driver Driver jvm ,
.class; Class<?> clz
.getClass();
, new
Clazz.getConstructor([String.class]);
Con.newInstance([ ]);
class ( new () )
Cls.newInstance();
class
Field c=cls.getFields(): (public) , 。
Field c=cls.getDeclaredFields(): , public、private proteced,
class
Cls.getMethod(“ ”,class……parameaType);( )
Cls.getDeclareMethod(“ ”);( , )
M.setAccessible(true);( )
1). Method.invoke(obj ,obj );-----( )
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.