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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 高正新 于 2014-3-16 10:55 编辑

Person类如下:
  1. package com.fly.reflect;

  2. import java.util.List;

  3. public class Person {
  4.         public Person() {
  5.                 System.out.println("person");
  6.         }
  7.         
  8.         public Person(String name) {
  9.                 System.out.println("name:" + name);
  10.         }
  11.         
  12.         public Person(String name, int age) {
  13.                 System.out.println("person name:" + name + "   age:" + age);
  14.         }
  15.         
  16.         private Person(List list) {
  17.                 System.out.println("list");
  18.         }
  19.         
  20.         public void testMe() {
  21.                 System.out.println("可以了");
  22.         }
  23. }
复制代码
反射得到构造函数方法如下:
  1. //反射构造函数:public Person(List list)
  2.         @Test
  3.         public void test4() throws Exception {
  4.                 Class clazz = Class.forName("com.fly.reflect.Person");
  5.                 Constructor c = clazz.getConstructor(List.class); //原来是这里写错了。
  6.                 c.setAccessible(true); //暴力反射
  7.                 Person p = (Person)c.newInstance(new ArrayList());
  8.                 p.testMe();
  9.         }
复制代码

我运行为什么总是报错啊?
  1. Exception in thread "main" java.lang.NoSuchMethodException: com.fly.reflect.Person.<init>(java.util.List)
  2.         at java.lang.Class.getConstructor0(Class.java:2810)
  3.         at java.lang.Class.getConstructor(Class.java:1718)
  4.         at com.fly.reflect.Demo2.main(Demo2.java:11)
复制代码



评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

1 个回复

倒序浏览
原来是我粗心了。。:L
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马