我在Eclipse的Collection上收到警告,不太可能将类型为String的contains(Object)用作警告。有没有办法修改代码以免收到警告?
String[] findNames = {"shares","ticker","avgCost",
"mktPrice","gnLs","totVal"};
// get the name of every public instance variable
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 ");
}
}
答案 0 :(得分:1)
这是因为publicNames是ArrayList
中的string[]
,并且您正在尝试查看它是否包含单个字符串,这不适用。
现在,我不知道为什么要存储字符串元组和类型。我建议您以这种方式进行更改,但如果您确实需要它们,则可能需要查看@Deadpool的答案
ArrayList<String> publicNames = new ArrayList<String>();
现在此行不会发出任何警告
publicNames.contains(findNames[i])
答案 1 :(得分:1)
您正尝试将String
与String array
进行比较,如果要查找String
包含在字符串数组List<String[]>
中的值
您可以使用java-8流
publicNames.stream().flatMap(Arrays::stream).anyMatch(item->item.equals(findNames[i]))
如果String[]
中的publicNames
中的任何一个包含findNames[i]
,将返回true,否则将返回false