Java中构造函数能不能使用invoke()方法?
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
class Q{
private String name; private boolean gender; private int age; private double score;
public Q(){
this.name = "none"; this.gender = false; this.age = 0; this.score = 0;
}
public Q(String name, boolean gender, int age, double score){
this.name = name; this.gender = gender; this.age = age; this.score = score;
}
public void set(String name, boolean gender, int age, double score){
this.name = name; this.gender = gender; this.age = age; this.score = score;
}
public String toString(){
return "name:"+this.name+", gender:"+this.gender+", age:"+this.age+", score:"+this.score;
}
}
public class invokeDemo{
public static void main(String[] args){
Class<?> c = null;
try{
c = Class.forName("Q");
} catch(Exception e){
e.printStackTrace();
}
try{
Method m3 = c.getMethod("Q");
Method m4 = c.getMethod("Q", String.class, boolean.class, int.class, double.class);
System.out.println(m3.invoke(c.newInstance()));
System.out.println(m4.invoke(c.newInstance(), "大大", true, 19, 100.9999));
} catch(Exception e){
e.printStackTrace();
}
}
}
运行结果如下:
java.lang.NoSuchMethodException: Q.Q()
at java.base/java.lang.Class.getMethod(Class.java:2227)
at invokeDemo.main(invokeDemo.java:45)
嗯嗯...NoSuchMethodException发生在Method m3 = c.getMethod("Q");这一行。
这样看来构造方法不能使用invoke()方法了?或者说我使用的方法不正确?
欢迎讨论、解答!