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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王龙彪 中级黑马   /  2012-7-21 15:26  /  1890 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王龙彪 于 2012-7-21 16:21 编辑
  1. //获取Stringbuffer的构造方法,但跟String.class有什么关系呢?哪些类可以获取另一个类的构造函数呢?
  2. //我用Object.class或者System.class都会报错
  3. Constructor conVim = String.class.getConstructor(StringBuffer.class);
  4. String vim = (String) conVim.newInstance(new StringBuffer("vim"));
  5. System.out.println(vim);
复制代码

3 个回复

倒序浏览
注意啊:你获得的 不是 StringBuffer 的构造器 ,获得是 String 的 构造器:这个构造器 的参数是StringBuffer,
使用 StringBuffer 来构造 String

去 好好看一下视频吧,里面很清楚
回复 使用道具 举报

public class aa
{
        public static void main(String[] args)
        {
                 
                Constructor conVim = String.class.getConstructor(StringBuffer.class);
                //获取Stringbuffer的构造方法,但跟String.class有什么关系呢? -----String.class获取String这个风类的字节码,String这个类有一个构造方法是接受StringBuffer的,所以可以用StringBuffer.class了
                哪些类可以获取另一个类的构造函数呢?-------只要那个类的构造方法可以接收对象,那么就可以了
               
            //我用Object.class或者System.class都会报错
                //当然,因为String这个类的构造方法没有可以接收对象的。

String vim = (String) conVim.newInstance(new StringBuffer("vim"));
sop(vim);
               
        }
           
}
回复 使用道具 举报
多谢楼上两位,getConstructor的参数为了确定是哪个构造函数,里面放的是参数类型的类文件
就像这样写也可以的
  1. Constructor conVim = String.class.getConstructor(byte[].class);
  2.                 String vim = (String) conVim.newInstance(new byte[]{2, 4, 6, 8});
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马