不能改变if语句里面的变量值???? java [复制]

问题描述 投票:-3回答:1

我试图在系统托盘中为我的通知设置一个请勿打扰功能,我试图制作一个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;
        }
    }
});
java variables if-statement
1个回答
0
投票

变量dnd必须是最终的或有效的最终(这是这种情况)。这就是您能够从闭包上下文中引用它的原因。编译器不希望您从闭包或匿名类中重新分配dnd

您可以通过其中任何一个解决问题

  1. 在对象中包装dnd: DndConfig dndConfig = new DndConfig(); 并在匿名类: dndConfig.dnd = true; //your logic
  2. 使dnd成为主类的实例字段。
© www.soinside.com 2019 - 2024. All rights reserved.