내가 이해, 우선 당신은 당신이 URLClassLoader를 통해 당신이 파일의 클래스 파일 및 문자열 클래스 이름 (또한 파일 이름과 정확히 같은 클래스 이름을 알아낼 수)
있다고 가정하자 것을 할 수있는 클래스 개체에 클래스 파일을 변환해야
try {
URLClassLoader classLoader = new URLClassLoader(new URL[]{parent_directory});
Class<?> clazz = classLoader.loadClass(className);
} catch (Exception e) {
// something went wrong..
e.printStackTrace();
}
는 이제 클래스 객체가 있고 당신은 식별 할 수있는 방법을 만들 필요가 메소드 이름을 알 수없는 클래스 개체를
try {
Object instance = clazz.newInstance(); // if there no default constructor you need to get constructors list and create a object
Method method = clazz.getDeclaredMethod(methodName, String.class);
method.setAccessible(true);
method.invoke(instance, argument);
} catch (Exception e) {
// something went wrong..
e.printStackTrace();
}
주를 만들 반사를 사용할 수 있습니다.
'URLClassLoader'에 전달하는 'URL'은 클래스 파일이 아닌 기본 디렉토리를 나타내야합니다. 따라서 선택한 클래스의 패키지에 따라 클래스의 상위 디렉토리 또는 상위 클래스 중 하나를 사용해야합니다. – Holger
네 답은 사실에 따라 답변이 –
예. 그렇지만 loadClass 메소드는 클래스의 바이너리 이름을 인수로 취하고 파일 클래스 객체에서 해당 클래스의 절대 경로 만 갖고 있습니다. 그것에 대한 해결책이 있습니까? @mithatkonuk – Shubham