反射newinstance构造函数java参数数目错误
我正在学习Java中的反射,并尝试制作一个构造函数示例。但有一个问题:“错误的论点数量”。 通过谷歌和stackoverflow搜索,我找不到我目前面临的问题。 谁能帮我理解这个问题,非常感谢。 这是我的密码:反射newinstance构造函数java参数数目错误,java,reflection,constructor,Java,Reflection,Constructor,我正在学习Java中的反射,并尝试制作一个构造函数示例。但有一个问题:“错误的论点数量”。 通过谷歌和stackoverflow搜索,我找不到我目前面临的问题。 谁能帮我理解这个问题,非常感谢。 这是我的密码: public static void main(String[] args) { PrintClass f = new PrintClass(); Class cl = f.getClass(); Constructor<?> construc
public static void main(String[] args) {
PrintClass f = new PrintClass();
Class cl = f.getClass();
Constructor<?> constructor[] = cl.getDeclaredConstructors(); // cl.getDeclaredConstructors() also won't work...
f.field1 = 3;
PrintClass p1 = null;
PrintClass p2 = null;
try {
p1 = (PrintClass) constructor[0].newInstance(); // constructor[0].newInstance((Object[])args) also won't work...
p2 = (PrintClass) constructor[1].newInstance("this is not PrintClass-------");
p1.print();
p2.print();
} catch (InstantiationException | IllegalAccessException
| IllegalArgumentException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class PrintClass {
String s = "this is PrintClass...";
int field1;
public PrintClass(String s) {
this.s = s;
}
public PrintClass() {
}
public void print() {
System.out.println(s);
}
再次感谢您帮助我理解这个问题。:) 您正在无参数调用两个构造函数中的第一个。但是,如何确保数组中的第一个构造函数是没有参数的构造函数,而不是需要字符串的构造函数呢 你不能,因为上面说: 返回的数组中的元素没有排序,也没有任何特定的顺序 如果希望引用该类的无参数构造函数,则应调用
cl.getDeclaredConstructor();
cl.getDeclaredConstructor(String.class);
如果希望引用以字符串作为参数的构造函数,则应调用
cl.getDeclaredConstructor();
cl.getDeclaredConstructor(String.class);
哇,按照你的建议改变后,我的超级天才计划现在运行良好。谢谢你,你是个天才@佐罗,谢谢你,但我不是天才。只是一个经验丰富的开发人员,他知道大多数编程问题都可以通过阅读文档来解决:)