单个方法返回类的不同泛型类型的实例

时间:2016-10-06 14:10:46

标签: java generics

我有一个通用类如下:

MyClass<T>
{
    ....
}

现在,我想要创建一个通用方法,例如public MyClass<T> getMyClassInstance(Type t){...},我在其中传递一个类型,此方法为MyClass提供了该类型的实例。

请参阅以下示例。

  1. 如果我按如下方式调用此方法getMyClassInstance(Integer_type),则会返回MyClass<Integer>个实例。

  2. 同样,如果我按如下方式调用此方法getMyClassInstance(String_type),则返回MyClass<String>实例。

  3. 我该怎么写这个方法?如果无法做到,有没有其他更好的方式来做这样的事情?

2 个答案:

答案 0 :(得分:1)

对于简单的应用程序,您甚至不需要传入TypeClass参数。请考虑以下事项:

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);

如果你不能做到这一点,那么编译器是盲目的。