Collection<String[]> 上 contains(Object) 的参数类型 String 不太可能

Unlikely argument type String for contains(Object) on a Collection<String[]>

我在 Eclipse 中收到警告:

Unlikely argument type String for contains(Object) on a Collection<String[]>

有没有办法修改代码以免收到此警告?

String[] findNames = {"shares","ticker","avgCost","mktPrice","gnLs","totVal"};    

ArrayList<String[]> publicNames = new ArrayList<String[]>();        
for(Field publicField : publicFields) {
    String[] name = new String[2];
    name[0] = publicField.getName();
    name[1] = publicField.getType().toString();
    publicNames.add(name);           
} 

for (int i = 0; i < 6; i++) {           
    if(publicNames.contains(findNames[i])) {
        System.out.println("\n***** Warning: instance variable " 
                           + findNames[i] 
                           + " declared as \"public\" *****\n ");               
    }           
}

这是因为 publicNames 是 string[]ArrayList 并且您试图查看它是否包含单个字符串,这不适用。

现在我不知道你为什么要存储字符串元组,然后再存储类型。我建议你改成这样,但如果你真的需要它们,你可能想看看@Deadpool 的回答

ArrayList<String> publicNames = new ArrayList<String>(); 

现在这一行不会抛出任何警告

publicNames.contains(findNames[i])

您正在尝试将 StringString array 进行比较,如果您想在字符串数组列表中查找 String 值,List<String[]>

您可以使用 java-8 流

publicNames.stream().flatMap(Arrays::stream).anyMatch(item->item.equals(findNames[i])) 

will return true if any of String[] in publicNames contains findNames[i], or will return false