package first; public class ReflectTest03 { public static void main(String[] args) throws Exception{ Class.forName("first.Child03"); Parent03 p = DManager.get(); p.exec(); Class.forName("oracle.Driver.") } } // A가 제공 interface Parent03{ public void exec(); } // A가 제공 class DManager{ private static Parent03 instance; public static void setInstance(String className) throws RuntimeException{ try{ Class clazz = Class.forName(className); Object obj = clazz.newInstance(); DManager.instance = (Parent03)obj; }catch(Exception ex){ throw new RuntimeException(ex); } } public static Parent03 get(){ return instance; } } // B가 제공 class Child03 implements Parent03{ static{ DManager.setInstance("first.Child03"); } public void exec(){ System.out.println("Child03.exec"); } }즉, 이러한식으로 구현이 안에서 되는것이다
근데 static은 동시성의 문제가 생길수도 있다. 따라서 개선된 방법을 쓰는것이다.
'소프트웨어 개발 > Java - Basic' 카테고리의 다른 글
eclipse refactoring, 메서드 형식 다 고치기 (0) | 2014.10.21 |
---|---|
Exception을 이용한 트랜잭션 익셉션 처리 (0) | 2014.10.21 |
리플렉트 하는거 (0) | 2014.10.20 |
사용자의 입력을 받아 클래스 만들기 (1) | 2014.10.20 |
layer별로 Exception다르게 하기 (0) | 2014.10.20 |