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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张飞年 中级黑马   /  2012-9-26 00:19  /  1156 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 屈俊材 于 2012-9-26 07:50 编辑
  1. <p>//试了半天没输出想要的结果,各位大虾帮看哈哪 里不对了</p><p>public class TestField1 {
  2.         public static void main(String[] args) throws Exception, Exception {
  3. String[] s = new String[]{"abc","defc","gruc"};
  4. Class clazz = s.getClass();
  5.                 Field[] fields = clazz.getFields();
  6.                
  7.                 for(int i = 0 ; i < fields.length;i++){
  8.                         String value = (String) fields[i].get(clazz.newInstance());
  9.                         System.out.println(value.replace('c', 'f'));//这里为什么会替换不了呢,而且运行之后就没动静 了,也不输出。这里想要输出被替换了的s数组中的字符串
  10.         }
  11.         }
  12. }</p>
复制代码

4 个回复

倒序浏览
本帖最后由 杨卫腾 于 2012-9-26 00:34 编辑
  1. class Test4
  2. {
  3.                 public static void main(String[] args) throws Exception
  4.                 {
  5.                         String[] s = new String[]{"abc","defc","gruc"};
  6.                
  7.                 for(int i = 0 ; i < s.length;i++) {
  8.                                System.out.println(s[i].replace('c', 'f'));//这里为什么会替换不了呢,而且运行之后就没动静 了,也不输出。这里想要输出被替换了的s数组中的字符串
  9.                         }
  10.         }
  11. }
复制代码
这样不就好了吗,干嘛还要什么字节码文件的对象呢,为什么要那么麻烦呢!
回复 使用道具 举报
帮你分析一下原因,一个数组是没有属性的。所以通过数组的字节码得到的属性数组长度是0。Field[] fields = clazz.getFields();在这里fields.length==0.所以没有结果,跟字符串替换没有关系
回复 使用道具 举报
hello_world! 发表于 2012-9-26 00:49
帮你分析一下原因,一个数组是没有属性的。所以通过数组的字节码得到的属性数组长度是0。Field[] fields =  ...

一针见血!
回复 使用道具 举报
杨卫腾 发表于 2012-9-26 00:28
这样不就好了吗,干嘛还要什么字节码文件的对象呢,为什么要那么麻烦呢! ...

呵呵,,在练习反射呢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马