2014-06-06 4 views
-1

받은 생성자를 기반으로 개체를 만들려면 java.lang.reflect.Constructor 클래스 newInstance 메서드를 호출하려고합니다.
나는 클래스 B동적으로 메서드 인수를 생성합니다.

class A 
{ 
    void method() 
    { 
     ABC abc = new ABC(arg1,arg2); 
     Constructor c = Class.forName("someClass").getConstructor(ABC.class); 
     Object o = B.getObject(c,abc); 
     Object 
     //do something 
    } 

} 
class B 
{ 
    public static Object getObject(Constructor c, Object... args) 
    { 
     //how to create dynamic call here??? 
     c.newInstance(args[0],args[1],...,args[args.length-1]); 
    } 
} 
class someClass 
{ 
    someClass(ABC abc) 
    { 
     //do something 
    } 
    someClass(ABC abc, int a) 
    { 
     //do something 
    } 
} 

나는 무엇이든지 someClass을 수정할 수 없습니다 동적 호출을 생성해야합니다. (. 사실 someClass 내가 10 ~ 15 다른 calsses를 호출하고 그냥 예, 그래서 수정이 옵션을 선택하지 않습니다 게다가, 나는 일반적인 클래스 B 확인해야합니다.) 당신은 ... 매개 변수로 배열을 전달할 수 있습니다

+0

리플렉션을 사용하여 메소드를 호출하는 방법을 보여주는 [간단한 질문/답변] (http://stackoverflow.com/a/2407242/778118)이 있습니다. – jahroy

답변

1

:

c.newInstance(args) 
+0

'newInstance' 메쏘드는 생성자가 오직 하나의 인자를 가졌다 고 가정하기 때문에 이것은 작동하지 않을 것입니다. 'Object []' –

+0

@AbhishekBhatia : 확실합니까? 그것을 시도 할 때 작동하는 것 같습니다; 좀 더 시험해보고 시범을 보여 주거나 제대로 작동하는지 확인해 보겠습니다. – user2357112

+0

시도했을 때'IllegalArgumentException'을주었습니다. 데모를 보여 주시겠습니까 –

관련 문제