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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡宝林 中级黑马   /  2012-6-3 10:33  /  1389 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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);

结果报错了, 哪里错了,求解!!!

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

2 个回复

倒序浏览
错误出在这里, Object o=cc.newInstance(s); 张老师重点说过了;  因为你的s是一个String数组;   要把它给包装一下,   变为一个Object对象;   因为cc.newInstance(Object obj)里放的是一个Object ;      我给你改了一下,
  1. import java.lang.reflect.Constructor;

  2. public class Two {
  3.    private String [] s;
  4.    public Two(String [] s)
  5.    {
  6.    this.s=new String[s.length];
  7.    for(int x=0;x<s.length;x++){
  8.     this.s[x]=s[x];
  9.    }
  10.    
  11.    }
  12.    public static void main(String [] arg)throws Exception{
  13.            Class c=Class.forName("china.adu.demo.Two");
  14.            Constructor cc=c.getConstructor(String[].class);
  15.            String [] s=new String []{"abc"};
  16.            Object o=cc.newInstance((Object)s); // 问题出在这里;
  17.            System.out.println(o);
  18.            }
  19.   }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
for语句里面有个大写的S么,还有个大写的LENGTH,不应该是小写代表字符串数组长度么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马