使用反射制作对象

时间:2012-05-19 10:24:20

标签: java reflection

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

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

上面的代码行将通过调用Employee的default或no-arg构造函数来创建Employee对象。然后我通过调用Employee的的设置者来为对象设置一些值

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

2 个答案:

答案 0 :(得分:2)

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

Class<?> fooClass = Foo.class;
Constructor<?> constructor = fooClass.getConstructor(String.class);
Object obj = constructor.newInstance("hello");

答案 1 :(得分:1)

查看Class.getConstructorConstructor

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

Constructor<Employee> constructor = Class.forName("p.Employee").getConstructor(Integer.class, String.class);
Employee employee = constructor.newInstance(1,"foo");