2010-05-15 4 views
0

저는 java를 처음 사용합니다. 내 응용 프로그램에 동적으로로드 된 클래스를 사용하려고합니다. 응용 프로그램은 클래스를 모릅니다. 클래스 이름을 입력하여 클래스 이름을로드하려고 시도합니다. 클래스를 모르기 때문에 (캐스팅을 사용할 수는 없지만) 해당 클래스의 일부 메서드를 호출하면됩니다 (모든 클래스에는 해당 메서드가 있어야 함). 인터페이스에 대해 생각했지만 어떻게해야할지 모르겠다. 어떻게 이러한 메서드를 호출 할 수 있습니까?Java : 동적으로로드되는 클래스 사용

감사 감안할 때

+1

예를 들어 무엇을 설명 할 수 있습니까? – Robert

답변

3

예, Class 클래스를 사용할 수 있습니다.

public InterfaceType getDynamicClass(String className) { 
     return (InterfaceType) Class.forName(className).newInstance(); 
    } 

인터페이스는 메소드가 존재하는지 확인하는 것입니다. 물론 예외를주의해서 응용 프로그램에 맞게 처리해야합니다.

4

당신이 K의 인스턴스를 만드는 경우

Class k = loadMyClassDynamically(); 

당신이 그런

Method m = k.getDeclaredMethod("methodName", ArgClass1.class, ArgClass2.class); 

,

Object ki = k.getDeclaredConstructor().newInstance(); 

는,687의 메소드를 호출 할 수 있습니다

m.invoke(ki, ArgClass3.class, ArgClass4.class); 

자세한 내용은 the reflection tutorial을 참조하십시오.

0

그럼 인터페이스를 사용하거나 상속받은 기본 클래스를 사용하는 것이 좋습니다. 이렇게하면 런타임에 생성하는 객체의 미리 정의 된 메서드 집합을 호출 할 수 있습니다.

그리고 지금까지 (텍스트?) 입력을 기반으로 인스턴스를 만들려면 리플렉션을 사용해야 할 것입니다.

+0

왜 이것을 다운 그레이드 했습니까? – tylermac

+0

그래, 내가 tylermac와 동의한다;) – JHollanti