标题: 关于反射的构造方法 [打印本页] 作者: 唐见 时间: 2012-8-26 22:37 标题: 关于反射的构造方法 package cn.itcast;
public class Test {
public static void main(String[] args){
try {
Person p=Person.class.getConstructor().newInstance();//获取类中的默认构造方法,怎么会出错呢?
p.printName();
}catch (Exception e){
e.printStackTrace();
}
}
}
class Person {//本身存在默认构造方法
public void printName(){
System.out.println("tangjian");
}
}
报异常:
java.lang.NoSuchMethodException: cn.itcast.Person.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at cn.itcast.Test.main(Test.java:6)作者: 杨震 时间: 2012-8-26 22:45 本帖最后由 杨震 于 2012-8-26 22:54 编辑
package cn.itcast;
public class Test {
public static void main(String[] args){
try {
Person p=Person.class.getDeclaredConstructor().newInstance();//getConstructor获取的必须是public的,由于你的Person不是public的,所以其默认构造函数也不是public的,所以应该用我这个方法,其可以返回所有访问级别的构造方法:另外,你也可以将Person单独放一个文件中,并将访问权限改成public也行的
p.printName();
}catch (Exception e){
e.printStackTrace();
}
}
}
class Person {//本身存在默认构造方法