new String(new StringBuffer("abc"));
需求:用字节码写上面的方法
Constructor constructor1=String.class.getConstructor(StringBuffer.class);
String str2=(String)constructor1.newInstance(new StringBuffer("abc"));
1、String.class:返回String类的字节码
2、String.class.getConstructor:获取String类里面的构造方法
3、String.class.getConstructor(StringBuffer.class):获取参数为StringBuffer的构造方法
4、constructor1.newInstance:通过构造方法建造实例对象
5、constructor1.newInstance(new StringBuffer("abc")):对象所传的参数是new StringBuffer("abc")
6、(String)constructor1.newInstance(new StringBuffer("abc")):因为编译时期不知道是String类型,所以强转String
疑问:
1、String.class.getConstructor(StringBuffer.class):获取的构造方法是否是存入内存中的字节码?还是得到的是“new String()”?
2、String.class.getConstructor(StringBuffer.class):编译时只是没有价值参数StringBuffer.class,String.class是不是说明是String类呢?为什么(String)constructor1.newInstance(new StringBuffer("abc"))因此句说编译时期不知道是String类型,所以强转加"(String)"。
|
|