Better

业精于勤荒于嬉

Java反射3-构造器

Better's Avatar 2017-02-23 Java译文

  1. 1. 获取构造器对象
  2. 2. 构造器的参数
  3. 3. 生成类对象
  • Obtaining Constructor Objects
  • Constructor Parameters
  • Instantiating Objects using Constructor Object

在程序运行时,能通过Java反射你能获取到类的构造器。这是通过Java类java.lang.reflect.Constructor完成的。通过这篇文你将得到更多关于构造器的信息。

获取构造器对象

构造器对象是通过Class对象获取的,比如:

1
2
Class aClass = ...//obtain class object
Constructor[] constructors = aClass.getConstructors();

这个constructos数组中的值是类中每个申明为public的构造器。
如果你知道类中构造器的一些更具体的参数,你可以直接获取他而不是直接获取所有的。例子中返回了中有String参数的构造器的对象。

1
2
Class aClass = ...//obtain class object
Constructor constructor = aClass.getConstructor(new Class[]{String.class});

如果类中没有申明有String参数的构造器,即没有找到时,getConstructor()方法会抛出NoSuchMethodException异常。

构造器的参数

你可以获取一个构造器的参数:

1
2
Constructor constructor = ... // obtain constructor - see above
Class[] parameterTypes = constructor.getParameterTypes();

生成类对象

你可以通过构造器生产对应的类对象:

1
2
3
4
5
//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的值。

原文

This article was last updated on days ago, and the information described in the article may have changed.