摘要:使用反射可以检视类的构造函数,并且能在运行时实例化对象。示例如下数组包含一个类定义的所有构造函数的对象实例。下面的示例代码返回一个类的拥有一个类型参数的的构造函数。如果没有给定参数的构造函数,如例子中的,会抛出。
使用反射可以检视类的构造函数,并且能在运行时实例化对象。这些是通过java 类java.lang.reflect.Constructor实现的。本文将更详细的介绍Constructor类。
获得构造函数对象Constructor类可以通过class对象获得。示例如下:
Class aClass = ...//obtain class object Constructor[] constructors = aClass.getConstructors();
Constructor[]数组包含一个类定义的所有public构造函数的对象实例。
如果你知道要访问的构造函数的精确参数,有比使用获得所有构造函数更优的方法。下面的示例代码返回一个类的拥有一个String类型参数的public的构造函数。
Class aClass = ...//obtain class object Constructor constructor = aClass.getConstructor(new Class[]{String.class});
如果没有给定参数的构造函数,如例子中的String.class,会抛出NoSuchMethodException。
构造函数的参数你可以使用下方的代码读取一个构造函数的参数:
Constructor constructor = ... // obtain constructor - see above Class[] parameterTypes = constructor.getParameterTypes();使用构造函数对象实例化对象
你可以使用下方的代码实例化对象:
//get constructor that takes a String as argument Constructor constructor = MyObject.class.getConstructor(String.class); MyObject myObject = (MyObject)constructor.newInstance("constructor-arg1");
Constructor.newInstance()方法的参数是一个可变参数列表,但是你必须提供你要调用的构造函数的精确参数。即如果参数类型是String,则必须提供一个String类别的值。(形参与实参必须一一对应)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77254.html
摘要:有一个参数的构造方法姓名有多个参数的构造方法姓名年龄这的执行效率有问题,以后解决。私有构造方法私有的构造方法年龄反射获取对象的三种方式通过对象名方法获取通过类名方式获得通过方法获得在运行期间,一个类,只有一个对象产生。 原文地址 反射简单来说,就是动态加载对象,并对对象进行剖析。在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道并获取这个类的所有属性和方法。 Java反...
摘要:简单说反射技术可以对一个类进行解剖。反射的基本步骤获得对象,就是获取到指定的名称的字节码文件对象。所以一般情况下,被反射的类,内部通常都会提供一个公有的空参数的构造函数。 定义 其实就是动态加载一个指定的类,并获取该类中的所有的内容。 而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。 简单说:反射技术可以对一个类进行解剖。 反射的好处: 大大的增强...
摘要:通过反射获取带参无返回值成员方法并使用设置安全检查,访问私有构造函数必须创建实例这种不行,注意和方法需要传递参数测试复制这个功能获取私有方法,同样注意和的区别赋予访问权限调用方法。 反射 目录介绍 1.反射概述 1.1 反射概述 1.2 获取class文件对象的三种方式 1.3 反射常用的方法介绍 1.4 反射的定义 1.5 反射的组成 1.6 反射的作用有哪些 2.反射的...
摘要:构造器创建实例构造器和方法的反射类不同点在于,可以创建实例,代码如下所示。 上一篇文章介绍了反射的基本概念以及获取类相关信息的反射API,这一章节主要记录如何对类的成员进行操作的相关反射API。 操作类成员的类 反射API中提供了如下接口,用于对类的成员进行操作。 java.lang.reflect.Member 该接口主要有以下三个实现类,用于对类成员中的字段,方法和构造器进行操作...
阅读 2676·2021-10-11 10:57
阅读 2337·2021-08-27 16:20
阅读 1298·2019-08-30 13:03
阅读 1537·2019-08-30 12:50
阅读 3283·2019-08-29 14:16
阅读 1508·2019-08-29 11:12
阅读 1581·2019-08-28 17:53
阅读 2863·2019-08-27 10:58