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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王峰峰 中级黑马   /  2014-4-5 10:09  /  778 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问大家,这个程序哪儿不合适,存在异常。。。
  1. import java.lang.reflect.Method;

  2. public class Test01 {
  3.         public static void main(String[] args) throws Exception{
  4.                 String str = "abcabc" ;
  5.                 //取得Stirng类中的replace方法
  6.                 Method method = String.class.getMethod("replace", String.class,String.class) ;
  7.                 //替换str中的c为d并打印
  8.                 System.out.println(method.invoke(str, "c","d")) ;               
  9.         }
  10. }
复制代码

2 个回复

正序浏览
你要替换的是字符,不是字符串,replace方法接受的两个参数是,char类型的。replaceAll接受的两个参数才是String类型,你在看看API文档。
回复 使用道具 举报
public class Test01 {
        public static void main(String[] args) throws Exception{
                String str = "abcabc" ;
                Method method = String.class.getMethod("replace",char.class,char.class) ;  //这个地方的参数要是char类型的
                System.out.println(method.invoke(str, 'c','d')) ; //这个地方也要改为char类型               
        }
字符串的每一个字母都是char类型,利用反射得到replace方法时就要在方法中传入char的字节码,在method.invoke(str, 'c','d')时字母因为是char类型所以要单引号

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

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