📅  最后修改于: 2023-12-03 15:01:34.696000             🧑  作者: Mango
在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
对象,并使用该对象的默认构造函数来创建一个新实例。然后,我们可以将该对象类型转换为泛型类型,并返回它。