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 JavaConstructor 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 Stringas 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, aNoSuchMethodException 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.
本文详细介绍了如何通过Java反射API获取类的构造器,并利用这些构造器实例化对象,包括获取构造器的方法、构造器参数读取及实例化过程。
443

被折叠的 条评论
为什么被折叠?



