import java.lang.reflect.*;
public class ReflectTest {
public static void main(String[] args) throws Exception{
String str1="abc";
Class cls1=str1.getClass();
Class cls2=String.class;
Class cls3=Class.forName("java.lang.String");
Class cls4=Class.forName("com.ClassText.A");
Constructor con=A.class.getConstructor(int.class);
A a=(A) con.newInstance(345);
a.show();
}
}
class A{
int sum;
A(){}
A(int sum){this.sum=sum;}
public void show(){
System.out.println("this is A.show()"+sum);
}
}
运行报的是:Exception in thread "main" java.lang.NoSuchMethodException: com.ClassText.A.<init>(int)
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at com.ClassText.ReflectTest.main(ReflectTest.java:13)
到底是哪里错了
------解决思路----------------------
getConstructor是返回的public构造器,要用getDeclaredConstructor这个方法