如何创建通用 类,以便T扩展集合 ?

问题描述 投票:0回答:2

我想创建一个通用的ThreadWorker类,它的泛型类型<T>接受扩展类型为<String>的Collection类的类。

我试过了:

public class Worker <T extends Collections<String>> extends SwingWorker<VectorDetails , String>    

但是我收到一个错误:

The type Collections is not generic; it cannot be parameterized with arguments <String>

当我写作时:

public class Worker <T extends Collections> extends SwingWorker<VectorDetails , String>  

它编译很好,但这不是我需要的,因为这个Worker类的实例可以使用不是String的其他类的类型创建。 (像< Integer><Character>等...)。

如何强制用户使用扩展/实现包含字符串的Collection类的类型创建我的类的实例?

java generics collections
2个回答
1
投票

那是你在找什么?

class StringCollection<T extends Collection<H>, H extends String> {}

1
投票

错误说明代码中有什么问题。 Collections不是通用类型。它是一个实用程序类,有很多静态方法来操作Collection。你应该使用Collection<String>或任何类型。 Collection是一个泛型类型(列出并设置扩展)。

© www.soinside.com 2019 - 2024. All rights reserved.