개체 생성자의 서명과 거의 같은 외부 원본 문자열을받습니다. 클래스 이름과 매개 변수가 들어 있습니다. 예를 들어Java 리플렉션을 사용하여 개체 만들기
:
public class Foo {
public Foo(int x, int y, int z) {
// do something
}
}
public class Bar {
public Bar (int x, boolean bool) {
// do something
}
}
의 내가 이런 많은 클래스가 있고, 내가받은 문자열을 기반으로 이러한 클래스에서 객체를 생성하고 싶은 말은하자 (즉 클래스 이름과 paramters을 포함). 이 작업을 수행 할 수 있습니까?
는 나는이 같은 것을 사용하여 클래스를 얻을 수 있습니다 알고
String className = "myClass";
Class<?> myClass = Class.forName(className);
//Constructor<?> ctor = myClass.getConstructor();
//Object object = ctor.newInstance(new Object[] { ctorArgument });
을하지만 컴파일시에 모르는 경우 어떻게 생성자 및 유형의가 얼마나 많은 paramters 객체를 인스턴스화 할 수 있습니다 그들은 될 것인가? 그건 그렇고, 내가 원하는 개체 클래스를 만드는 가장 가능성이 단 하나의 생성자를 사용할 수 있습니다. 그러나 각 클래스는 다른 클래스와 다른 생성자를 가질 수 있습니다.
: 예 - 그것은 부울 필드'Boolean.valueOf (argStr) '등의 경우 그런 다음
convertStringToActualType()
예를 들어 .. 실제 매개 변수에 문자열 값을 변환하는 방법을 알고 있어야합니다 생성자에 대한 인수의 수 및 유형. 그러나 어느 시점에서 전달할 값을 결정해야합니다. –전달하려는 값은받은 문자열에서 파싱됩니다. 다음과 같이 보일 수 있습니다. "Foo (4,5,7) "또는"Bar (1, true) ". – Johnny