프로그래밍/Java

[JAVA] 클래스를 동적으로 호출하는 리플렉션(Reflection)의 간단한 예

일단개그하다 2015. 7. 28. 01:31



JAR 파일로 구성되어 있는 클래스를 동적으로 호출 하여 사용하는 리플랙션의 간단한 예제이다

Calculator의 내용과 JAR 파일 생성 방법은 링크 참조




리플랙션의 예제이다


String workingDirectory = System.getProperty("user.dir");

String jarFilePath = workingDirectory + "\\src\\Calculator.jar";

JAR 파일의 경로를 찾아서


File jarFile = new File(jarFilePath);

JAR 파일에 대하여 File 객체를 생성한다


URL classURL = new URL("jar:" + jarFile.toURI().toURL() + "!/");

classLoader = new URLClassLoader(new URL[] {classURL});

File 객체를 통하여 클래스 파일을 불러온다


Class<?> c = classLoader.loadClass("Calculator");

Constructor<?> constructor = c.getConstructor(new Class[]{});

Object object = constructor.newInstance(new Object[]{});

불러온 JAR 파일에서 "Calculator"라는 클래스를 불러와 생성자를 실행 시켜준다


Method method = c.getMethod("add", new Class[]{Integer.TYPE, Integer.TYPE});

불러온 클래스에서 이름이 "add"이며 매개변수가 Integer, Integer인 메서드를 불러온다


method.invoke(object, 1, 2)

해당 메서드를 실행 하기 위하여 해당 메서드를 가지고 있는 객체인 object를 넘겨주고 Integer 명령 인자인 1 과 2를 넘겨준다

해당 메서드의 반환값이 존재한다면 반환값이 반환된다