java反射机制的问题

xiaoheixiadao 2010-03-16 07:22:37
1. package com.zxn.example;
2.
3. import java.lang.reflect.Constructor;
4.
5. public class MainClass
6. {
7. public static void main(String[] args)
8. {
9. try
10. {
11. // find the class and the constructor
12. Class cls = Class.forName("com.zxn.example.MyClass");
13. Class[] paramDef = new Class[]{ String.class, String.class };
14. Constructor constructor = cls.getConstructor( paramDef );
15.
16. // create a new instance by using the constructor
17. Object[] params = new Object[]{ "userName", "password" };
18. MyClass clsInstance = (MyClass)constructor.newInstance(params);
19.
20. // call the test() method of the class
21. clsInstance.test();
22. }
23. catch (Exception e)
24. {
25. System.out.println(e.getMessage());
26. }
27. }
28. }
这是java的反射机制去访问我另外一个包中的MyClass类中的构造方法,(看的例子),不知道第13行是什么意思?他是创造一个新的实例么?不知道什么意思,附上连接地址http://www.javaeye.com/wiki/topic/482281
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
justwalking 2010-03-17
  • 打赏
  • 举报
回复
反射是个不错的东东
junmasky 2010-03-16
  • 打赏
  • 举报
回复
Class[] paramDef = new Class[]{ String.class, String.class };

13行相当于告诉反射器,你的构造方法里面参数列表的类型

也就是说你的构造函数MyClass(String str1, String str2)的参数列表是两个String类型的参数,这个Class类型的数组中的数组个数跟你的构造函数中的参数个数相同,并且数组元素依次为你构造函数参数列表各个数据类型的Class对象,如Myclass(Type1 type1, Type2 type2, Type3 type3,……),那么13行就相应的为:
Class[] paramDef = new Class[]{Type1.class, Type2.class, Type3.class, ……}
wzju64676266 2010-03-16
  • 打赏
  • 举报
回复
13. Class[] paramDef = new Class[]{ String.class, String.class };
14. Constructor constructor = cls.getConstructor( paramDef );

13行定义形参类型
14行调用两个形参都为String 的constructor 相当于该例中的
public MyClass(String s1,String s2)

-------------------------------------------

17. Object[] params = new Object[]{ "userName", "password" }; //赋值
18. MyClass clsInstance = (MyClass)constructor.newInstance(params); //传入实参调用,
相当于new MyClass("userName", "password");


xiaoheixiadao 2010-03-16
  • 打赏
  • 举报
回复
那第十七行创建新的实例的时候,他们的两个String参数为username,password
是不是因为Myclass类里的构造函数的参数为username,password?,还有那个test()的方法是什么呀?
Aishangwan 2010-03-16
  • 打赏
  • 举报
回复
声明一个Class数组对象,里面有两个字符串Class对象的元素。
MyClass 类中有个构造方法,参数是两个字符串

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧