0

我们可以使用反射来创建对象。假设我在包 p 中有一个类“Employee”

Employee emp = Employee.class.newInstance()  OR
Employee emp = (Employee)Class.forName("p.Employee").newInstance() 

上面的代码行将通过调用 Employee 的默认或无参数构造函数来创建 Employee 对象。然后我通过调用 Employee 的 setter 为对象设置一些值

有没有办法通过在构造函数本身中给出值来使用反射创建对象,即通过调用参数化构造函数?

4

2 回答 2

2

是的,让我们假设Foo有一个构造函数接受单个字符串作为其参数。然后使用以下代码给出一个使用该构造函数的实例:

Class<?> fooClass = Foo.class;
Constructor<?> constructor = fooClass.getConstructor(String.class);
Object obj = constructor.newInstance("hello");
于 2012-05-19T10:28:56.560 回答
1

看看Class.getConstructorConstructor

首先,您通过其参数类型获得正确的构造函数,然后使用该类型的参数调用它:

Constructor<Employee> constructor = Class.forName("p.Employee").getConstructor(Integer.class, String.class);
Employee employee = constructor.newInstance(1,"foo");
于 2012-05-19T10:33:28.103 回答