Javase 복습 (8) 반사 및 주석

5453 단어

리플렉스


프레임 디자인의 영혼
  • 프레임워크: 반제품 소프트웨어.프레임워크를 바탕으로 소프트웨어 개발을 진행하고 인코딩을 간소화할 수 있다
  • 반사: 클래스의 각 구성 부분을 다른 대상으로 봉인하는 것이 반사 메커니즘이다.
  • 이점:
  • 프로그램이 실행되는 동안 이러한 대상을 조작할 수 있다.
  • 결합을 풀고 프로그램의 확장성을 높일 수 있다.


  • Class 객체를 가져오는 방법:
  • Class.forName ("모든 클래스 이름"): 바이트 파일을 메모리에 불러오고 Class 대상을 되돌려줍니다.
  • 주로 프로필에 사용되며 클래스 이름을 프로필에 정의합니다.파일 읽기, 로드 클래스
  • 류명.class: 클래스 이름의 속성class를 통해 가져오기
  • 매개 변수의 전달에 많이 사용
  • 대상.getClass (): getClass () 방법은 Object 클래스에서 정의됩니다.
  • 대상의 바이트 코드를 얻는 데 사용되는 방법
  • 결론: 같은 바이트 파일(*.class)은 프로그램이 실행되는 과정에서 한 번만 불러옵니다. 어떤 방식으로 얻든class 대상은 동일합니다.

  • Class 객체 기능:
  • 기능 제공:
  • 멤버 변수들 얻기
  • Field[] getFields(): 모든public 수식의 구성원 변수 획득
  • Field getField(String name) 지정한 이름의public 수식의 구성원 변수 가져오기
  • Field[] getDeclaredFields() 모든 구성원 변수를 획득하고 수식자를 고려하지 않음
  • Field getDeclaredField(String name)

  • 구조 방법을 얻는 사람들
  • Constructor>[] getConstructors()
  • Constructor getConstructor( >... parameterTypes)
  • Constructor getDeclaredConstructor( >... parameterTypes)
  • Constructor>[] getDeclaredConstructors()

  • 구성원 획득 방법:
  • Method[] getMethods()
  • Method getMethod(String name, >... parameterTypes)
  • Method[] getDeclaredMethods()
  • Method getDeclaredMethod(String name, >... parameterTypes)

  • 전체 클래스 이름 얻기
  • String getName()



  • Field: 구성원 변수
  • 작업:
  • 설정값
  • void set(Object obj, Object value)

  • 획득 값
  • get(Object obj)

  • 접근 권한 수식자의 안전 검사 무시
  • setAccessible(true): 폭력반사


  • Constructor:구성 방법
  • 객체 만들기:
  • T newInstance(Object... initargs)
  • 빈 매개 변수 구조 방법으로 대상을 만들면 간소화할 수 있습니다:Class 대상의 newInstance 방법

  • Method:메소드 객체
  • 실행 방법:
  • Object invoke(Object obj, Object... args)

  • 획득 방법 이름:
  • String getName: 획득 방법명

  • 사례:
  • 요구:'프레임워크'를 작성하여 이 클래스의 어떤 코드도 바꿀 수 없는 전제에서 임의의 클래스의 대상을 만들고 그 중의 임의의 방법을 실행할 수 있습니다.
  • 구현:
  • 구성 파일
  • 반사
  • 단계:
  • 만들어야 할 대상의 전체 클래스 이름과 실행해야 할 방법을 설정 파일에 정의
  • 프로그램에서 읽기 프로필 불러오기
  • 반사 기술을 사용하여 클래스 파일의 메모리를 불러오기
  • 작성 대상
  • 실행 방법



  • 주해

  • 개념: 절차를 설명한다.컴퓨터에 보여준 거
  • 주석: 프로그램을 문자로 설명합니다.프로그래머한테 보여준 거
  • 정의: 메모(Annotation), 메타데이터라고도 합니다.코드 단계에 대한 설명얘는 JDK 1.5 및 이후 버전에 도입된 특성은 클래스, 인터페이스, 매거와 같은 차원이다.패키지, 클래스, 필드, 방법, 국부 변수, 방법 매개 변수 등 앞에서 이 요소들을 설명하고 주석할 수 있다.
  • 개념 설명:
  • JDK1.5 이후의 새로운 기능
  • 절차를 설명하는
  • 메모 사용: @ 메모 이름
  • 역할 분류:
  • 문서 작성: 코드에 표시된 주석을 통해 문서 생성 [문서 생성doc 문서]
  • 코드 분석: 코드에 표시된 주석을 통해 코드를 분석한다[반사 사용]
  • 컴파일러 검사: 코드에 표시된 주석을 통해 컴파일러가 기본적인 컴파일러 검사를 실현할 수 있도록 한다[Override]
  • JDK에서 미리 정의된 주석
  • @Override: 이 주석에 표시된 방법이 부류(인터페이스)에서 계승되었는지 검사
  • @Deprecated: 이 주석에 표시된 내용은 이미 유행이 지났음을 나타낸다
  • @SuppressWarnings: 경고 억제
  • 일반 전달 매개 변수all@SuppressWarnings("all")

  • 사용자 정의 메모
  • 형식: 메타 메모public @interface 메모 이름 {속성 목록;}
  • 본질: 주석은 본질적으로 하나의 인터페이스이고 이 인터페이스는 기본적으로 Annotation 인터페이스를 계승한다.
  • public interface MyAnno extends java.lang.annotation.Annotation {}

  • 속성: 인터페이스의 추상적인 방법
  • 요구 사항:
  • 속성의 반환값 유형은 다음과 같은 값이 있습니다.
  • 기본 데이터 유형
  • String
  • 열거
  • 주석
  • 이상 유형의 수조
  • 속성이 정의되어 사용 시 속성에 값을 부여해야 합니다
  • 속성을 정의할 때default 키워드를 사용하여 속성의 기본 초기화 값을 사용하면 주석을 사용할 때 속성의 값을 부여하지 않을 수 있습니다.
  • 속성이 하나만 값을 부여해야 하고 속성의 이름이value라면 value는 생략할 수 있고 직접 값을 정의하면 된다.
  • 수 그룹이 값을 부여할 때 값은 {} 패키지를 사용합니다.그룹에 값이 하나만 있으면 {} 생략할 수 있습니다


  • 원 주석: 주석을 설명하는 데 사용되는 주석
  • @Target: 주해가 작용할 수 있는 위치를 설명한다.
  • ElementType 수치:
  • TYPE: 클래스에 사용 가능
  • METHOD: 방법에 작용할 수 있음
  • FIELD: 구성원 변수에 작용할 수 있음

  • @Retention: 주석이 보류된 단계를 설명합니다
  • @Retention(RetentionPolicy.RUNTIME): 현재 기술된 주석은class 바이트 파일에 보존되고 JVM에서 읽힙니다
  • @Documented:api 문서에 주석이 추출되었는지 설명
  • @Inherited: 이불류의 계승 여부를 설명

  • 프로그램에서 사용(해석) 주석: 주석에 정의된 속성 값 가져오기
  • 메모가 정의한 위치를 가져오는 대상(Class, Method, Field)
  • 지정된 메모 가져오기
  • getAnnotation(Class)//사실 메모리에 이 주석 인터페이스를 생성한 하위 클래스 실현 대상
      public class ProImpl implements Pro{
          public String className(){
              return "cn.itcast.annotation.Demo1";
          }
          public String methodName(){
              return "show";
          }
      }
  • 주석의 추상적인 방법을 호출하여 설정된 속성 값을 얻기
  • 사례: 간단한 테스트 프레임워크
  • 소결:
  • 이후 대부분의 경우 사용자 정의 주석이 아닌 주석을 사용합니다
  • 주해는 누구에게 쓰입니까?
  • 컴파일러
  • 해석 프로그램에 사용
  • 주석은 프로그램의 일부분이 아니라 주석이 하나의 라벨이라고 이해할 수 있다
  • 좋은 웹페이지 즐겨찾기