我有一个通用类如下:
MyClass<T>
{
....
}
现在,我想要创建一个通用方法,例如public MyClass<T> getMyClassInstance(Type t){...}
,我在其中传递一个类型,此方法为MyClass
提供了该类型的实例。
请参阅以下示例。
如果我按如下方式调用此方法getMyClassInstance(Integer_type)
,则会返回MyClass<Integer>
个实例。
同样,如果我按如下方式调用此方法getMyClassInstance(String_type)
,则返回MyClass<String>
实例。
我该怎么写这个方法?如果无法做到,有没有其他更好的方式来做这样的事情?
答案 0 :(得分:1)
对于简单的应用程序,您甚至不需要传入Type
或Class
参数。请考虑以下事项:
public <T> List<T> getList() {
return new ArrayList<>();
}
使用它很简单:
List<Integer> lst = getList();
编译器将推断所需列表的类型。
请注意,通过传递Type
参数可以获得更大的灵活性,尤其是在您可能事先不知道您希望获得哪种List
的情况下。但是这种语法,恕我直言,更自然地阅读,可能适合你想做的事情。 (我说“可能”,因为你没有提供大量细节......)
答案 1 :(得分:0)
Type
类必须在其上带有类型参数:Type<T>
,因此您可以声明
<T> MyClass<T> getMyClassInstance(Type<T> t);
如果你不能做到这一点,那么编译器是盲目的。