黑马程序员技术交流社区
标题:
[已解决]关于反射的问题,求教
[打印本页]
作者:
胡宝林
时间:
2012-6-3 10:33
标题:
[已解决]关于反射的问题,求教
本帖最后由 hy19985125 于 2012-6-4 10:56 编辑
package cn.itcast.one;
public class Two {
private final String [] s;
public Two(String [] s)
{
this.s=new String[s.length];
for(int x=0;x<S.LENGTH;X++){
this.s[x]=s[x];
}
}
}
我用下面的方法反射Two这个类 ,先反射出他的构造函数,然后用这个构造函数创建对象
Class c=Class.forName("cn.it.cast.one.Two");
Constructor cc=c.getConstructor(String [].class);
String [] s=new String []{"abc"};
Object o=cc.newInstance(s);
结果报错了, 哪里错了,求解!!!
作者:
杜俊彪
时间:
2012-6-3 11:21
错误出在这里, Object o=cc.newInstance(s); 张老师重点说过了; 因为你的s是一个String数组; 要把它给包装一下, 变为一个Object对象; 因为cc.newInstance(Object obj)里放的是一个Object ; 我给你改了一下,
import java.lang.reflect.Constructor;
public class Two {
private String [] s;
public Two(String [] s)
{
this.s=new String[s.length];
for(int x=0;x<s.length;x++){
this.s[x]=s[x];
}
}
public static void main(String [] arg)throws Exception{
Class c=Class.forName("china.adu.demo.Two");
Constructor cc=c.getConstructor(String[].class);
String [] s=new String []{"abc"};
Object o=cc.newInstance((Object)s); // 问题出在这里;
System.out.println(o);
}
}
复制代码
作者:
Kristy_Li
时间:
2012-6-3 11:30
for语句里面有个大写的S么,还有个大写的LENGTH,不应该是小写代表字符串数组长度么
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2