黑马程序员技术交流社区

标题: 请问这个用反射创建指定类的有参的构造函数哪里错了,... [打印本页]

作者: NevermoreFirst    时间: 2015-4-7 12:12
标题: 请问这个用反射创建指定类的有参的构造函数哪里错了,...
class ReflectTest_2
{
public static void main(String[] args) throws Exception
{
  Class d1 = Class.forName("Demo");
  Constructor con = d1.getConstructor(String.class); // 利用反射机制定义Demo类的指定构造方法
  Demo d1 = Demo.class.newInstance(new String("abc"));//创建对象
  //Demo d = Demo.class.newInstance();
  //Demo.class.getMethod("show").invoke(d);
}
}
/*
自定义一个类,定义一个有参数的构造方法
*/
class Demo
{
public String name;
Demo(String name)
{
  this.name = name;
}
public void show()
{
  System.out.println("123");
}
}

作者: NevermoreFirst    时间: 2015-4-7 12:17
打错了Demo d1 = Demo.class.newInstance(new String("abc"));//创建对象    应该改为Demo d2 = con.newInstance(new String("abc"));//创建对象
作者: NevermoreFirst    时间: 2015-4-7 12:19
NevermoreFirst 发表于 2015-4-7 12:17
打错了Demo d1 = Demo.class.newInstance(new String("abc"));//创建对象    应该改为Demo d2 = con.newIns ...

为什么运行时提示 Constructor con = d1.getConstructor(String.class); 这行报异常NoSuchMethodException呢
作者: 突然世界晴    时间: 2015-4-7 14:32
因为你的构造函数是默认得。
getConstructor 只能获取public修饰的。
改用getDeclaredConstructor应该就可以了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2