黑马程序员技术交流社区
标题:
反射中获取构造函数的问题
[打印本页]
作者:
王龙彪
时间:
2012-7-21 15:26
标题:
反射中获取构造函数的问题
本帖最后由 王龙彪 于 2012-7-21 16:21 编辑
//获取Stringbuffer的构造方法,但跟String.class有什么关系呢?哪些类可以获取另一个类的构造函数呢?
//我用Object.class或者System.class都会报错
Constructor conVim = String.class.getConstructor(StringBuffer.class);
String vim = (String) conVim.newInstance(new StringBuffer("vim"));
System.out.println(vim);
复制代码
作者:
丁二跃
时间:
2012-7-21 15:32
注意啊:你获得的 不是 StringBuffer 的构造器 ,获得是 String 的 构造器:这个构造器 的参数是StringBuffer,
使用 StringBuffer 来构造 String
去 好好看一下视频吧,里面很清楚
作者:
王飞
时间:
2012-7-21 15:33
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);
}
}
作者:
王龙彪
时间:
2012-7-21 16:17
多谢楼上两位,getConstructor的参数为了确定是哪个构造函数,里面放的是参数类型的类文件
就像这样写也可以的
Constructor conVim = String.class.getConstructor(byte[].class);
String vim = (String) conVim.newInstance(new byte[]{2, 4, 6, 8});
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2