자바(JAVA) - Reflection API

병호·2023년 8월 24일

자바

목록 보기
23/24
post-thumbnail

Reflection API란?

Reflection API는 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등)에 접근할 수 있게 해주는 자바 API이다.

class AppContext {
    Map map; //객체 저장소

    AppContext() {

        try {
            Properties p = new Properties();
            p.load(new FileReader("config.txt"));

            // Properties에 저장된 내용을 Map에 저장
            map = new HashMap(p);
            // 반복문으로 클래스이름을 얻어서 객체를 생성해서 다시 map에 저장
            for(Object key : map.keySet()){
                Class clazz = Class.forName((String)map.get(key));
                map.put(key, clazz.newInstance());
            }


        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    Object getBean(String key) {
        return map.get(key);
    }
}
[config.txt]
car=com.fastcampus.ch3.diCopy2.Truck
engine=com.fastcampus.ch3.diCopy2.Engine

위 코드에서 config.txt의 값을 읽어서 Properties 객체의 p 변수안에 저장한다. 해시맵을 생성하고 map에 읽은 값을 저장한다. Reflection API로 클래스이름을 얻고 객체를 생성하여 다시 map에 저장한다.

Class clazz = Class.forName((String)map.get(key));

Properties의 값은 Object형이므로 Map의 String형으로 변환해주기위해 타입변환을 한다.

map.put(key, clazz.newInstance());

객체를 생성하여 map에 다시 저장한다.

profile
안녕하세요

0개의 댓글