FindUnrelatedTypesInGenericContainer Bug的示例

时间:2015-05-26 12:49:31

标签: java generics findbugs

我努力寻找任何文档(默认情况下未启用)findbug检测器FindUnrelatedTypesInGenericContainer应该检测哪种错误模式。从它的名称和来源我会假设它检测到以下代码段中的错误,但它没有:

Set<String>[] sets = new Set[10];
for (int i = 0; i < 10; ++i) {
  sets[i] = new ConcurrentHashSet<String>();
  sets[i].add("Foo");
}
PoJo p = new PoJo("Foo");
sets[5].remove(p); // <- bug

任何人都可以

  1. 澄清探测器的错误类型和
  2. 判断是否有检测器从上方检测出错误?

1 个答案:

答案 0 :(得分:1)

以下情况会导致检测到有问题的错误(看起来类似于this link中描述的错误):

Set<Integer> set = new HashSet<>();
set.add(1);
System.out.println(set.remove("x"));

此片段与您的片段之间的唯一区别是您的片段具有泛型类型的数组。在这种情况下,FindBugs可能无法检测到错误。