자바 반사 day 04

모든 코드 는 제 github 개인 창고 에 있 습 니 다.
반사 원리
(day04reflection)
  • 프레임 워 크 는 대부분 반사 로 이 루어 진다.프레임 워 크 개발 에 서 는 모두 프로필 기반 개발 입 니 다.
  • 설정 파일 에 클래스 를 설정 하면 클래스 의 모든 내용 을 반사 하거나 클래스 의 특정한 방법 으로 실행 할 수 있 습 니 다.(클래스 의 모든 내용:속성,무 참 구조,유 참 구조,방법)
  • 반사 원리 자바 파일 의 컴 파일 과정:
    demo01.java
    demo01.class
    Class 클래스:class 바이트 파일 은 메모리 에 있 는 클래스 클래스 를 얻 으 면 모든 내용 을 얻 을 수 있 습 니 다.그래서 반 사 를 사용 해 야 합 니 다.
  • 클래스 명.class
  • 대상.getClass()
  • class.forName("경로")사용
  • 그 중에서 class 파일 의 속성,구조,방법)은 각각 Field,Constructor,Method 등 몇 가지 유형 으로 표시 된다.
    2.반사 조작 류 사용
  • Class 클래스 가 져 오기
  • Class class1 = Person.class; //   .class
    Class class2 = new Person().getClass();  //  .getClass()
    Class class3 = Class.forName("day04reflection.Person");
    //  class.forName("  ")
    
  • 조작 무 삼 구조 방법
  • Class class1 = Class.forName("day04reflection.Person");
    //  Person  
    Person person = (Person) class1.newInstance();
    person.setAge(2);
    System.out.println(person.getAge());
    
  • 조작 에 참여 구조
  • 가 있다.
    Class class1 = Class.forName("day04reflection.Person");
    //class1.getConstructors(); //        
    Constructor c1 = class1.getConstructor(String.class,int.class,String.class);
    Person person = (Person) c1.newInstance("zhang",23,"99");
    System.out.println(person.toString());
    
  • 조작 속성
  •  try {
         Class class1 = Class.forName("day04reflection.Person");
         //class1.getDeclaredFields();//      
         Person person = (Person) class1.newInstance();
         Field name = class1.getDeclaredField("name");
         //          /  
         name.setAccessible(true);
         name.set(person,"Chapman");
         System.out.println(person.getName());
     } catch (Exception e) {
         e.printStackTrace();
     }
    
  • 조작 일반 방법
  • Class class1 = Class.forName("day04reflection.Person");
    Method setName = class1.getDeclaredMethod("setName", 							String.class);
    Person person = (Person) class1.newInstance();
    setName.invoke(person,"right");
    
  • 정적 방법 을 조작 하고 방법의 첫 번 째 매개 변 수 는 null
  • 이다.
    Class class1 = Class.forName("day04reflection.Person");
    Method setName = class1.getDeclaredMethod("statics", 							String.class);
    Person person = (Person) class1.newInstance();
    setName.invoke(null,"right");
    

    좋은 웹페이지 즐겨찾기