黑马程序员技术交流社区
标题:
反射中newinstance()创造类的实例问题 请教大家
[打印本页]
作者:
沙漠里的小鱼
时间:
2012-2-2 23:06
标题:
反射中newinstance()创造类的实例问题 请教大家
Class<?> classType = 类.class;
Object x= classType.newInstance();
System.out.println(x);
还有一个
Class<?> classType = 类.class;
Constructor<?> constructor1 = classType.getConstructor();
Object x = constructor1.newInstance();
System.out.println(x);
谁能给我讲讲啊
作者:
陈丹阳
时间:
2012-2-2 23:39
Class<?> classType = 类.class;
Object x= classType.newInstance(); //该方法是Class中的方法,无参数
创建此 Class 对象所表示的类的一个新实例。
如同用一个带有一个空参数列表的 new 表达式实例化该类。
如果该类尚未初始化,则初始化这个类。
注意,此方法传播 null 构造方法所抛出的任何异常,包括已检查的异常。使用此方法可以有效地绕过编译时的异常检查,而在其他情况下编译器都会执行该检查。 Constructor.newInstance 方法将该构造方法所抛出的任何异常包装在一个(已检查的)InvocationTargetException 中,从而避免了这一问题。
Class<?> classType = 类.class;
Constructor<?> constructor1 = classType.getConstructor(); //该方法是Constructor类中的方法,原型是public T newInstance(Object... initargs),无参数是特殊情况。
使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。个别参数会自动解包,以匹配基本形参,必要时,基本参数和引用参数都要进行方法调用转换。
作者:
梅雄新
时间:
2012-2-3 00:37
Class<?> classType = 类.class;
这句是一个范例,意思是向内存中加载类的字节码(每一个类在内存中只加载一次字节码,其对象都是通过字节码来创建)更详细见张老师高薪技术视频中反射基础——Class类
Object x= classType.newInstance();
通过该类的字节码创建这个类的一个实例
System.out.println(x);
调用对象x的toString()方法,打印输出显示
同理
Constructor<?> constructor1 = classType.getConstructor();
通过类的字节码返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法
Object x = constructor1.newInstance();
使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。
System.out.println(x);
调用对象x的toString()方法,打印输出显示
作者:
最初的理想
时间:
2012-2-4 12:05
Object x= classType.newInstance();//实际上是调用类的无参构造函数实例化一个对象,如果该类没有无参构造函数则这句话会发生异常也就是不能用。
Constructor<?> constructor1 = classType.getConstructor(); //通过反射出构造函数后,再调用指定的构造函数实例化对象,无参有参都可以都必须是已有的构造函数。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2