如何在java中获取带动态参数的构造函数
我一直在读一些,但我找不到最好的解决方案,他们正在使用如何在java中获取带动态参数的构造函数,java,android,Java,Android,我一直在读一些,但我找不到最好的解决方案,他们正在使用 Class tempClass = Class.forName(classname); Constructor constructor = tempClass.getDeclaredConstructor(String.class); 它们定义了它们的参数类型,但是如果tempClass是动态的,它们当然有不同的构造函数参数,对吗 有解决这个问题的方法吗 您需要使用所需类型的参数重载构造函数。这称为编译时多态性。例如,您希望构造函数处理i
Class tempClass = Class.forName(classname);
Constructor constructor = tempClass.getDeclaredConstructor(String.class);
它们定义了它们的参数类型,但是如果tempClass是动态的,它们当然有不同的构造函数参数,对吗
有解决这个问题的方法吗 您需要使用所需类型的参数重载构造函数。这称为编译时多态性。例如,您希望构造函数处理int float和char参数。您需要用这些参数重载构造函数。因此,它可以动态处理不同的参数
Example:
Constructor(int a, int b);
Constructor(char a, char b);
Constructor(float a, float b);
您需要使用所需类型的参数重载构造函数。这称为编译时多态性。例如,您希望构造函数处理int float和char参数。您需要用这些参数重载构造函数。因此,它可以动态处理不同的参数
Example:
Constructor(int a, int b);
Constructor(char a, char b);
Constructor(float a, float b);
看看是如何定义的:
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
看看是如何定义的:
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
如果您不知道要查找的构造函数的参数,可以通过
tempClass.getDeclaredConstructors()
进行迭代。能否举例说明“tempClass是动态的”?如果您不知道要查找的构造函数的参数,您可以遍历tempClass.getDeclaredConstructors()
。能否举例说明“tempClass是动态的”是什么意思?
static <T> T construct(Class<T> aClass, Object...args)
throws NoSuchMethodException, SecurityException,
InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
Class<?>[] classes = new Class<?>[args.length];
for (int ii = 0; ii < args.length; ++ii) {
classes[ii] = args[ii].getClass();
}
Constructor<T> ctor = aClass.getDeclaredConstructor(classes);
return ctor.newInstance(args);
}
...
String abc = construct(String.class, "abc");
URL google = construct(URL.class, "http", "google.com", "/");