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

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

9 个回复

倒序浏览
String.class.getConstructor(StringBuffer.class);
真心看不懂你这句话怎么来的
回复 使用道具 举报

运行结果没错。
回复 使用道具 举报
wangshuying 发表于 2014-11-18 07:56
String.class.getConstructor(StringBuffer.class);
真心看不懂你这句话怎么来的

这个是反射那一块的
回复 使用道具 举报

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

那怎么解决呢??
回复 使用道具 举报

把charAt方法也反射出来,再调用invoke
Method charAtMethod = String.class.getMethod("charAt",int.class);
charAtMethod.invoke(str,2);
你试试看
回复 使用道具 举报
颜仔 中级黑马 2014-11-18 19:10:00
9#
好像是没有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:51
10#
  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. }
复制代码

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