黑马程序员技术交流社区

标题: 关于反射这一块,我这是什么原因错了“ [打印本页]

作者: 15621506590    时间: 2014-11-18 00:01
标题: 关于反射这一块,我这是什么原因错了“
本帖最后由 15621506590 于 2014-11-18 01:40 编辑

代码如下:

package Text;
import java.lang.reflect.Constructor;
public class StaticDemo {

        
        public static void main(String[] args) {
                 
               
               
                Constructor consrtuctor1 = String.class.getConstructor(StringBuffer.class);
                String str = (String)consrtuctor1.newInstance(new StringBuffer("abc"));
                System.out.println(str.charAt(2));
        }

}




提示:Unhandled exception type NoSuchMethodException
        at Text.StaticDemo.main(StaticDemo.java:14)


作者: wangshuying    时间: 2014-11-18 07:56
String.class.getConstructor(StringBuffer.class);
真心看不懂你这句话怎么来的
作者: yueyazhishang    时间: 2014-11-18 08:28

运行结果没错。

作者: 15621506590    时间: 2014-11-18 09:44
wangshuying 发表于 2014-11-18 07:56
String.class.getConstructor(StringBuffer.class);
真心看不懂你这句话怎么来的

这个是反射那一块的
作者: 15621506590    时间: 2014-11-18 09:47
yueyazhishang 发表于 2014-11-18 08:28
运行结果没错。

是不是我那配置错了,刚接触这个编译器,还不会用
作者: 一苇芦江    时间: 2014-11-18 10:46
没有反射方法呀,编译器不知道有charAt方法
作者: 15621506590    时间: 2014-11-18 11:11
一苇芦江 发表于 2014-11-18 10:46
没有反射方法呀,编译器不知道有charAt方法

那怎么解决呢??
作者: 一苇芦江    时间: 2014-11-18 11:33
15621506590 发表于 2014-11-18 11:11
那怎么解决呢??

把charAt方法也反射出来,再调用invoke
Method charAtMethod = String.class.getMethod("charAt",int.class);
charAtMethod.invoke(str,2);
你试试看
作者: 颜仔    时间: 2014-11-18 19:10
好像是没有System.out.println(str.charAt(2));这个方法。你也可以这样试试:
Method charAtMethod=String.class.getMethod("charAt",int.calss);
charAtMethod.invoke(str1,new Object[]{2});
试试看,反射出方法,再去调用。
作者: sugar    时间: 2014-11-18 22:17
  1. package com.caicai.domain;

  2. import java.lang.reflect.Constructor;
  3. public class Test {
  4.         
  5.         public static void main(String[] args) throws Exception {
  6.                
  7.                 Constructor consrtuctor1 = String.class.getConstructor(StringBuffer.class);
  8.                 String str = (String)consrtuctor1.newInstance(new StringBuffer("abc"));
  9.                 System.out.println(str.charAt(2));
  10.         }

  11. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2