📜  java 返回泛型类型的新实例 - Java (1)

📅  最后修改于: 2023-12-03 15:01:34.696000             🧑  作者: Mango

Java - 返回泛型类型的新实例

在Java中,我们可以使用泛型来编写更通用的代码。在某些情况下,我们需要返回一个泛型类型的新实例。在本文中,我们将学习如何返回一个泛型类型的新实例。

创建泛型类型的新实例

在Java中,我们可以使用 Class.newInstance() 方法来创建一个类的新实例。然而,这个方法只能创建非泛型类型的新实例。

为了创建泛型类型的新实例,我们需要使用 java.lang.reflect.Constructor 类。下面是一个示例代码:

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class GenericInstantiator {

    public static <T> T newInstance(Class<T> clazz) throws NoSuchMethodException,
            IllegalAccessException, InvocationTargetException, InstantiationException {
        Constructor<T> constructor = clazz.getConstructor();
        return constructor.newInstance();
    }

}

在这个示例代码中,我们定义了一个 GenericInstantiator 类,它有一个泛型方法 newInstance,该方法接受一个 Class 对象,并使用反射创建一个新实例。

newInstance 方法中,我们首先获取到传入类的默认构造函数,然后使用 newInstance() 方法创建一个新的对象。最后,我们将该对象类型转换为泛型类型,并返回它。

使用示例

现在,我们可以使用 GenericInstantiator 类来创建一个泛型类型的新实例。下面是一个示例代码:

public class MyClass {

    public void doSomething() {
        System.out.println("Hello, World!");
    }

    public static void main(String[] args) throws Exception {
        MyClass instance = GenericInstantiator.newInstance(MyClass.class);
        instance.doSomething();
    }

}

在这个示例代码中,我们先定义了一个 MyClass 类。然后,我们在 main 方法中使用 GenericInstantiator 类来创建一个 MyClass 类型的新实例,并调用它的 doSomething 方法。

总结

在Java中,我们可以使用 java.lang.reflect.Constructor 类来创建一个泛型类型的新实例。我们需要定义一个方法接受一个 Class 对象,并使用该对象的默认构造函数来创建一个新实例。然后,我们可以将该对象类型转换为泛型类型,并返回它。