[Effective Java]일반적인 프로그래밍 원칙들_8

Kim Ji Yun·2021년 11월 30일
0

Effective Java

목록 보기
8/9
post-thumbnail

8. 리플렉션 대신 인터페이스를 이용하라

  • java.lang.reflect의 핵심 리플렉션 기능(core reflection facility)을 이용하면 메모리에 적재된 클래스의 정보를 가져오는 프로그램을 작성할 수 있음

리플렉션 단점

  • 컴파일 시점에 자료형을 검사하여 얻을 수 있는 이점들 포기 코드
  • 가독성 떨어짐
  • 성능이 낮음
  • 일반적인 프로그램은 프로그램 실행 중에 리플렉션을 통해 객체를 이용하려 하면 안됨
  • 객체 생성은 리플렉션으로 하고 객체 참조는 인터페이스나 상위 클래스를 통함

ex27) 리플렉션 객체생성, 인터페이스 참조 예제

// 객체 생성은 리플렉션으로, 참조와 사용은 인터페이스로 
public static void main(String[] args) {
	// 클래스 이름을 Class 객체로 변환 
    Class<?> cl = null;
	try {
        cl = Class.forName(args[0]);
    } catch(ClassNotFoundException e) {
        System.err.println("Class not found.");
        system.exit(1);
    }
    
	// 해당 클래스의 객체 생성 
    Set<String> s = null; 
    try {
        s = (Set<String>) cl.newInstance();
    } catch(IllegalAccessException e) {
        System.err.println("Class not accessible.");
        System.exit(1);
    } catch(InstantiationException e) {
        System.err.println("Class not instantiable.");
        System.exit(1);
    }
    
	// 집합 이용
	s.addAll(Arrays.asList(args).subList(1, args.length)); 
    System.out.println(s);
}

0개의 댓글