java集合外观

java集合外观,java,collections,facade,Java,Collections,Facade,我需要创建一个接受TreeSet或HashSet的facade。 它的构造函数必须如下所示: CollectionFacadeSet(java.util.Collection<java.lang.String> collection) Collection<String> c = new ArrayList<>(); CollectionFacadeSet(java.util.Collection集合) 我导入java集合并使用以下行: Collecti

我需要创建一个接受TreeSet或HashSet的facade。 它的构造函数必须如下所示:

CollectionFacadeSet(java.util.Collection<java.lang.String> collection)
Collection<String> c = new ArrayList<>();
CollectionFacadeSet(java.util.Collection集合)
我导入java集合并使用以下行:

Collections <String> collection = new Collections<>();
Collections集合=新集合();
但是,java不会接受它,我得到一个错误:

  • 类型集合不是泛型的;不能使用参数对其进行参数化
    • 类型集合不是泛型的;不能使用参数对其进行参数化
有什么解决办法吗


谢谢

java.util.Collections
(注意复数形式)是一个助手类,有许多静态方法来操作
集合。
java.util.Collection
(单数)是JDK所有内置集合(
List
s、
Set
s等)的基类

TL;博士-你导入了错误的类

附言:
请注意,
java.util.Collection
是一个
抽象
类,您将无法实例化它。

尽管您的变量可以是一个集合,但它持有引用的对象必须是一个具体类型;无法实例化集合(或尝试实例化的集合)

试着这样做:

CollectionFacadeSet(java.util.Collection<java.lang.String> collection)
Collection<String> c = new ArrayList<>();
Collection c=newarraylist();
但如果您需要一套,请使用一套:

Set<String> set = new HashSet<>();
Set Set=newhashset();

我相信您面临的问题是因为您试图实例化“Collections”类型的变量。相反,可以将方法更改为接受使用“Set”接口的任何对象:

public Set<String> CollectionFacadeSet(Set<String> mySet)
公共集合集合FacadeSet(集合mySet)
如果希望返回特定类型的集合,例如HashSet或TreeSet,只需相应地更改return参数。在其中,您现在可以将集合设置为所选的集合类型:

Collection<String> myCollection = CollectionFacadeSet(someSet);
Collection myCollection=CollectionFacadeSet(someSet);

首先,您使用的是java.util.Collections类,它不是泛型类,因此无法将其参数化为字符串类型。您应该改用java.util.Collection

其次,由于集合是一个接口,因此必须将对象作为其实现类

你可以使用-

Collection <String> collection = new ArrayList<String>();
Collection=newarraylist();

您是否尝试过
收藏
(单数)?另外,您为什么要实例化
集合
呢?关于您的注意事项,我们可以补充一点,OP不需要用
新的
初始化他的
集合
变量。我相信这个变量是从构造函数中得到它的值的,在构造函数中OP得到了
集合的一个具体实例。我将此贴在手机上,但不完全知道如何将其更改为正确的格式:)