如何在 Java 中创建 Set<?> 的实例?



我正在编写一个单元测试,在这个测试中,我正在存根各种类,在某个阶段,我需要返回Set的一个实例作为值。我如何创建一个插入值的实例

private Set<?> keys;
String[] keys1 = new String[2];
keys1[0] =  "filter1";
keys1[1] = "filter2";
keys = new HashSet<>(Arrays.asList(keys1));
when(ctx.getFilter()).thenReturn(keys);

Set<?>的真正含义是"它是某种类型的对象集,但我不知道具体是哪种类型

String[] keys1 = new String[2];
keys1[0] =  "filter1";
keys1[1] = "filter2";
keys = new HashSet<String>(Arrays.asList(keys1));

假设您在测试方法中有这个。至少有一个错误是,您不应该将本地变量keys声明为private

您可能遇到的另一个问题是ctx.getFilter()的返回类型,您在问题中没有给出。但它必须与keys的类型相匹配。类型Set<?>(意味着任何类型的集合)不像返回类型那样常见,因为不知道内容的类型是什么,所以如果不进行强制转换,就无法对内容进行太多处理。

以下内容应该有效:

Set<?> keys;
String[] keys1 = new String[2];
keys1[0] =  "filter1";
keys1[1] = "filter2";
keys = new HashSet<>(Arrays.asList(keys1));
when(ctx.getFilter()).thenReturn(keys);

相关内容

  • 没有找到相关文章

最新更新