从存储在变量中的类创建对象

时间:2018-06-13 14:09:08

标签: java

我有一个公共抽象类Dog,其子类为CatMouse@Test public void test_cat() {Cat(name='Tom');} @Test public void test_mouse() {Mouse(name='Jerry');} @Test public void test_dog() {Dog(name='Spike');} 。我正在参数化测试,我想使用该类型作为参数。我关注this。有没有办法将类型存储在变量中?例如,我的测试可能是:

Object concreateType = Cat.class; concreteType(name="Tom")

我想对此进行参数化,以便具体类型位于变量中,然后实例化<div autofocus>

1 个答案:

答案 0 :(得分:0)

我同意Joakimtest_cat保留test_cat并明确测试Cat(等等)可能是最好的。

但是如果要对其进行泛化,可以使用Class实例和反射,使用getConstructor获取相关的构造函数,然后调用其newInstance方法:

public void test(Class cls) {
    Constructor c = cls.getConstructor(new Object[] { String.class });
    Object instance = cls.newInstance("Tom");
    // ...
}

致电:

testerObject.test(Cat.class);

显然,添加错误处理等。

您还可以从类对象中获取方法,因此您可以(例如)确保getName返回名称。