这个问题在这里已有答案:
我试图在系统托盘中为我的通知设置一个请勿打扰功能,我试图制作一个if语句,如果变量dnd = false
然后将系统托盘名称更改为“请勿打扰 - 打开”并将dnd
设置为true否则设置dnd = false
但在dnd = true;
和dnd = false;
下它有一条红线并且说“在封闭范围内定义的局部变量dnd必须是最终的或有效的最终”并且我不知道该怎么做。请帮忙。
这是我的代码:
boolean dnd = false;
doNotDisturb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (dnd == false) {
dnd = true;
doNotDisturb.setName("Do Not Disturb - on");
} else {
dnd = false;
}
}
});
变量dnd
必须是最终的或有效的最终(这是这种情况)。这就是您能够从闭包上下文中引用它的原因。编译器不希望您从闭包或匿名类中重新分配dnd
。
您可以通过其中任何一个解决问题
DndConfig dndConfig = new DndConfig();
并在匿名类:
dndConfig.dnd = true; //your logic
dnd
成为主类的实例字段。