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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾辉 黑马帝   /  2012-1-17 15:08  /  1992 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曾辉 于 2012-1-24 14:03 编辑

Class c=null;
try{
c=Class.forName("ch.Person");
Object obj=c.newInstance();
Constructor con=c.getDeclaredConstructor(String.class,int.class);
上面代码中的:getDeclaredConstructor(String.class,int.class);什么意思?String.class和int.class分别什么意思?

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

4 个回复

倒序浏览
字节码c是Person在内存中的一个映射。
Object obj=c.newInstance();这行代码其实就是实例化了一个Person类,obj就是Person类的对象,
Constructor con=c.getDeclaredConstructor(String.class,int.class);这行代码就是Person类的一个构造方法
这个构造方法接收两个参数,一个String类型,一个int类型
String.class就是传入的String类型的字节码
int.class就是传入的int类型的字节码

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
1. getDeclaredConstructor,顾名思义,得到已声明的构造器。

2. 查API,Class.getDeclaredConstructor(Class<?>... parameterTypes),返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。parameterTypes 参数是 Class 对象的一个数组,它按声明顺序标识构造方法的形参类型。

3. 据上面代码,c是Person类,c 的 getDeclaredConstructor 方法得到Person 构造器的一个对象(实例),所以con就是Person 的一个构造器(的对象),由于方法有(String.class,int.class),故构造器还有两参数,一个String类型,一个int类型。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
getDeclaredConstructor(String.class,int.class);得到已声明的构造器参数,需要接受两个参数。
String.class和int.class
String.class表示String的字节码对象,int.Class表示int的字节码对象。
意思就是接受的两个参数,分别是字符串,和整型。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
1.API:getDeclaredConstructor(Class<?>... parameterTypes)
          返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。
也就是说改方法返回的是一个构造方法(可以是私有的构造方法),带指定的参数。

2.String.class 表示String类的类型 int.class表示int的基本类型
通过上面的方式指定构造方法传入的参数类型;

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马