如何解决这个问题?
错误在于@ scrollPane和map。
scrollPane错误:无法分配最终的局部变量,因为它是在封闭类型中定义的
映射错误建议:初始化变量。
final Map<ItemType, JScrollPane> viewScrollPanes = new HashMap<ItemType, JScrollPane>();
final JScrollPane scrollPane;
final Map<ItemType, JScrollPane> map;
this.viewList.forEach((type, list) -> {
list.setSelectionMode(0);
list.setVisibleRowCount(5);
list.putClientProperty("type", type);
list.setCellRenderer(this.itemRenderer);
list.setName(String.valueOf(type.toString()) + "List");
scrollPane = new JScrollPane(list);
scrollPane.setMinimumSize(new Dimension(0, 110));
scrollPane.setName(type.toString());
map.put(type, scrollPane);
return;
});
答案 0 :(得分:4)
您无法在循环中重复分配final
变量。
看起来scrollPane
应该是每次迭代中的局部变量。
map
(否则你不能put
中的任何内容。
答案 1 :(得分:0)
你做不到。 您定义了一个最终变量,您只能存储一个最终对象。 你做了一个for循环,并且对于每次迭代,你尝试在scrollpane中分配一个新对象,但该变量被标记为最终对象。
所以唯一的方法是删除final关键字。
关于地图,删除最终关键字并将其改为
Map<ItemType, JScrollPane> map = new HashMap<>();