一、通过获取Construstor可以获取到具体的某个构造方法,getConstrustor(obj...)方法后面的参数为可变参数,根据参数得到具体的某个需要的构造函数。
Construstor constustor =Class.forName("java.lang.String").getConstrustor(StringBuffer.class);
创建实例:
通常写法:String str = new String(new StringBuffer("abc"));
反射写法:String str = (String)constustor.newlnstance(new StringBuffer("abc"));
//调用此方法时构造方法后面的参数类型须与获取到的一致
//str = (String)constustor.newlnstance("abc");这个写法没有语法问题,但在运行过程中会报错(前后参数类型不一致的错误)。
二、Class.newlnstance();
案例String str = Class.forName("java.lang.String").newlnstance();
该方法直接找到内部默认的构造方法,通过查看底层代码实际上也是通过读取缓存中取到的无参构造方法,如果缓存中没有就写入缓存在后面的调用就直接去缓存中查找。 |
|