A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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");
}
}

3 个回复

倒序浏览
打错了Demo d1 = Demo.class.newInstance(new String("abc"));//创建对象    应该改为Demo d2 = con.newInstance(new String("abc"));//创建对象
回复 使用道具 举报
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呢
回复 使用道具 举报
因为你的构造函数是默认得。
getConstructor 只能获取public修饰的。
改用getDeclaredConstructor应该就可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马