如何将参数传递给匿名类?

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

是否可以向匿名类传递参数或访问外部参数?例如:

int myVariable = 1;

myButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // How would one access myVariable here?
    }
});

是否有方式访问myVariable或传递myVariable而不将侦听器创建为实际的命名类?

迷迭香迷迭香提问于
NAMIHEAPTX4869回答于
已采纳

对于匿名类,这些可以是来自包含类(es)的实例变量或标记为最终的局部变量。

砸蛋大叔回答于

通过添加返回“this”的初始化方法,并立即调用:

int myVariable = 1;

myButton.addActionListener(new ActionListener() {
    private int anonVar;
    public void actionPerformed(ActionEvent e) {
        // How would one access myVariable here?
        // It's now here:
        System.out.println("Initialized with value: " + anonVar);
    }
    private ActionListener init(int var){
        anonVar = var;
        return this;
    }
}.init(myVariable)  );

扫码关注云+社区