如何在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", "/");