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])
您正在尝试将 String
与 String 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
我在 Eclipse 中收到警告:
Unlikely argument type
String
forcontains(Object)
on aCollection<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])
您正在尝试将 String
与 String array
进行比较,如果您想在字符串数组列表中查找 String
值,List<String[]>
您可以使用 java-8 流
publicNames.stream().flatMap(Arrays::stream).anyMatch(item->item.equals(findNames[i]))
will return true if any of
String[]
inpublicNames
containsfindNames[i]
, or will return false