깊이 이해 반사 메커니즘

2185 단어 JAVA 진급
1. 반사 적 개념:
자바 의 반사 체 제 는 프로그램 이 실 행 된 상태 에서 프로그램의 구조 나 변수 유형 을 바 꿀 수 있 도록 하 는 것 을 말한다.다시 말 하면 자바 가 실행 할 때 이름 을 알 수 있 는 class 류 를 불 러 와 구조 함수, 구성원 변수 와 방법 을 얻 을 수 있다 는 것 이다.
2. 자바 반사 메커니즘 을 통 해 실례 화 하 는 방법:
1) 해당 대상 의 클래스 획득:
  
import java.lang.reflect.Field;
import java.util.List;

/**
 * Created by ykanghe on 12/31/16.
 */
public class Reflection {

    private String name = "tom";

    private String age;

    private List list;


    public static void main(String[] arg) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        Class relectClass = Reflection.class;
        try {
            //---------------             ----------------//
            //          getClass    
            Reflection instance = new Reflection();
            instance.getClass();
            //     .class   
            Class relectInstance = Reflection.class;
            //          Class     forname   
            Class> relect = Class.forName("Reflection");

            //--------------------       getConstructor         -------------//
            /**
             Constructor getConstructor(Class[] params) --                   ,

             Constructor[] getConstructors() --             

             Constructor getDeclaredConstructor(Class[] params) --                (       )

             Constructor[] getDeclaredConstructors() --           (       )
             */
            /*-----------        :getDeclaredConstructor(Class[] params)  getDeclaredConstructors(),         
                       ,               ,               ,         
             */

            /*                Field                 ,       name    ,      DeclaredField 
                   ;
            */
            Field names = relect.getDeclaredField("name");
            Object o = relect.newInstance();
            //        
            names.set(o, "lilei");
            System.out.print(o.getClass().getName() + "|" + names.get(o));
        } catch (Exception e) {
            System.out.print(e);
        }

    }
}

좋은 웹페이지 즐겨찾기