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

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

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

int myVariable = 1;

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

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

牙膏厂理事牙膏厂理事提问于
五星格兰特就事论事不撕逼!三观不合删评价!回答于

从技术上讲,不,因为匿名类不能有构造函数。

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

我不是酱油哥Junior Author回答于

是的,通过添加返回“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)  );

扫码关注云+社区