您的位置:首页 > 编程语言 > Java开发

Java Reflection - Constructors

2015-05-31 11:48 363 查看
http://tutorials.jenkov.com/java-reflection/constructors.html

Using Java Reflection you can inspect the constructors of classes and instantiate objects at runtime. This is done via the Java class
java.lang.reflect.Constructor
. This text will get into more detail
about the Java
Constructor
object.

Obtaining Constructor Objects

The
Constructor
class is obtained from the
Class
object. Here is an example:

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

The
Constructor[]
array will have one
Constructor
instance for each public constructor declared in the class.

If you know the precise parameter types of the constructor you want to access, you can do so rather than obtain the array all constructors. This example returns the public constructor of the given class which takes a
String
as
parameter:

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

If no constructor matches the given constructor arguments, in this case
String.class
, a
NoSuchMethodException
is thrown.

Constructor Parameters

You can read what parameters a given constructor takes like this:

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


Instantiating Objects using Constructor Object

You can instantiate an object like this:

//get constructor that takes a String as argument
Constructor constructor = MyObject.class.getConstructor(String.class);

MyObject myObject = (MyObject)
        constructor.newInstance("constructor-arg1");

The
Constructor.newInstance()
method takes an optional amount of parameters, but you must supply exactly one parameter per argument in the constructor you are invoking. In this case it was a constructor
taking a
String
, so one
String
must be supplied.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: