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를 넘겨준다
해당 메서드의 반환값이 존재한다면 반환값이 반환된다