所以,我得到了好的' JComboBox的unchecked call to addItem(E)
。我熟悉常见的情况,但组合框在功能上处理的列表中,解决方案使我无法理解。剥离代码示例:
public static Boolean final test(final List<JComboBox> comboboxList) {
final List<String> stuff=new ArrayList<>();
// stuff gets stuffed with stuff here
comboboxList.forEach((JComboBox combobox) -> {
combobox.removeAllItems();
stuff.forEach((contents) -> {
combobox.addItem(contents);
});
});
}
传入List中的组合框都声明为<String>
,但这似乎并没有帮助forEach中的addItem。好像我应该在forEach中声明它,但我一直无法找到这样做的有效语法。
答案 0 :(得分:1)
传入List中的组合框都声明为 ,但这似乎并没有帮助forEach中的addItem。
它没有帮助,因为您在每次使用String
类声明变量时都没有指定JComboBox
类型。
所以它声明原始JComboBox
,即JComboBox<Object>
而警告。
public static Boolean test(final List<JComboBox<String>> comboboxList) {
final List<String> stuff = new ArrayList<>();
// stuff gets stuffed with stuff here
comboboxList.forEach((JComboBox<String> combobox) -> {
combobox.removeAllItems();
stuff.forEach((contents) -> {
combobox.addItem(contents);
});
});
return someBooleanValue; // to compile
}
请注意,声明lambda参数的类型不是必需的。您可以通过以下方式快捷编写代码:
public static Boolean test(final List<JComboBox<String>> comboboxList) {
final List<String> stuff = new ArrayList<>();
// stuff gets stuffed with stuff here
comboboxList.forEach(combobox -> {
combobox.removeAllItems();
stuff.forEach(combobox::addItem);
});
return someBooleanValue; // to compile
}