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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© --_.Is’攸稀 中级黑马   /  2014-2-17 17:33  /  889 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 --_.Is’攸稀 于 2014-2-17 18:36 编辑

关于反射构造函数的~为什么我弄的程序找不到构造函数
首先有个Person类,代码如下:
  1. public class Person
  2. {
  3.         String name;
  4.         int year = 0;
  5.         Person(){}
  6.         Person(String name,int year)
  7.         {
  8.                 this.name = name;
  9.                 this.year=year;
  10.         }
  11. }
复制代码
然后我的主代码如下:
  1. package reflectTest;

  2. import java.lang.reflect.Constructor;


  3. public class reflectTest {

  4.         public static void main(String[] args){
  5.                 Person person1 = new Person();
  6.                 Class c1 = person1.getClass();//创建一个字节码对象
  7.                 try {
  8.                         c1.getConstructor(String.class,int.class);//获取有参的那个构造函数
  9.                 } catch (NoSuchMethodException e) {
  10.                         System.out.println("这错");
  11.                 } catch (SecurityException e) {
  12.                         
  13.                         e.printStackTrace();
  14.                 }
  15.                 //获取所有的构造函数
  16.                 Constructor[] cons=c1.getConstructors();
  17.                 System.out.println(cons.length);
  18.         }

  19. }
复制代码
显示的是
---------
这错
0
---------
为什么?哪里错了!~




评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

2 个回复

倒序浏览
Person的构造方法不是public的,而getConstructor和getConstructors返回的是class表示的public的构造方法。
改正:要不用getDeclaredConstructor和getDeclaredConstructors
        :要不把Person的构造方法public化

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
e.c 发表于 2014-2-17 18:15
Person的构造方法不是public的,而getConstructor和getConstructors返回的是class表示的public的构造方法。 ...

噢~就说是哪里不对劲!!!知道了,知道了~谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马