反射详解-通过Class实例化具体类的对象(无参数构造)
来源:互联网 发布:js判断变量是否未定义 编辑:程序博客网 时间:2024/06/10 15:49
国际惯例直接上代码
package com.riadu.test;/** * 手机模型 * @author www.riadu.com * @date 2012-07-25 */public class Mobile {private String size;//型号private String factory;//厂商public Mobile(){}public String getSize() {return size;}public void setSize(String size) {this.size = size;}public String getFactory() {return factory;}public void setFactory(String factory) {this.factory = factory;}}
测试类:
package com.riadu.test;/** * 测试类 * @author www.riadu.com * @date 2012-07-25 */public class Client3 {public static void main(String[] args) {Class<?> mob = null;try {mob = Class.forName("com.riadu.test.Mobile");} catch (ClassNotFoundException e) {e.printStackTrace();}Mobile mobile = null;try {//通过newInstance()实例化对象 通过无参构造实例化对象mobile = (Mobile) mob.newInstance();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}mobile.setFactory("SAMSUNG");mobile.setSize("I9000");System.out.println(mobile.getFactory()+":"+mobile.getSize());}}
输出结果:SAMSUNG:I9000
API详解:
newInstance
public T newInstance() throws InstantiationException, IllegalAccessException
- 创建此 Class 对象所表示的类的一个新实例。如同用一个带有一个空参数列表的
new
表达式实例化该类。如果该类尚未初始化,则初始化这个类。注意,此方法传播 null 构造方法所抛出的任何异常,包括已检查的异常。使用此方法可以有效地绕过编译时的异常检查,而在其他情况下编译器都会执行该检查。
Constructor.newInstance
方法将该构造方法所抛出的任何异常包装在一个(已检查的)InvocationTargetException
中,从而避免了这一问题。 - 返回:
- 此对象所表示的类的一个新分配的实例。
- 抛出:
IllegalAccessException
- 如果该类或其 null 构造方法是不可访问的。InstantiationException
- 如果此Class
表示一个抽象类、接口、数组类、基本类型或 void; 或者该类没有 null 构造方法; 或者由于其他某种原因导致实例化失败。ExceptionInInitializerError
- 如果该方法引发的初始化失败。SecurityException
- 如果存在安全管理器s,并满足下列任一条件:- 调用
s.checkMemberAccess(this, Member.PUBLIC)
拒绝创建该类的新实例 - 调用者的类加载器不同于也不是当前类的类加载器的一个祖先,并且对
s.checkPackageAccess()
的调用拒绝访问该类的包
- 调用
- 反射详解-通过Class实例化具体类的对象(无参数构造)
- java反射机制-通过无参构造实例化对象
- 通过反射创建对象(有参数和无参数构造方法)
- 通过 Class.forName实例化带来参数的构造函数
- 通过无参构造实例化对象
- java反射机制——通过无参构造实例化对象
- java通过反射,只需要传了类名和参数,就可以根据不同参数的构造方法实例化对象
- (104)反射:获取Class的对象、构造函数、字段、方法。反射实例练习
- Java反射详解-实例化Class类对象
- 02_3中方式的反射,通过Class.forName获得Class对象,通过类.class获得字节码对象,通过类实例.getClass()的方式获得Class对象
- 通过反射构造一个类的实例
- 无法反射到想要的构造函数时该如何根据Class对象构造Class实例?
- 通过反射可以获取Class的构造方法 通过构造方法创建对象
- 知道类名,通过反射获取类对象(有参和无参构造函数)
- NSClassFromString通过classString构造class然后实例化一个对象
- 通过反射获得类的实例对象
- [反射类] -- PHP动态实例化对象并向构造函数传递参数
- 反射(二)Class类,Method类,Field类,反射获得带参数的对象
- js页面跳转代码
- Saving Word 2007 Documents to PDF and XPS Formats
- 阿里巴巴离职DBA职业生涯总结
- Android ApiDemos示例解析(81):Graphics->Text Align
- 常见DB2命令
- 反射详解-通过Class实例化具体类的对象(无参数构造)
- fopen 打开方式
- Android linux adb安装操作命令图解
- Python 中的strip lstrip rstrip使用方法 .
- 求解:struts2 模型驱动问题
- JavaCore文件分析
- 让你的健康是你的实际年龄,消灭胆固醇高
- 在操作系统下删除了表空间后处理方法
- js javascrip 截取小数点后几位