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

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


int myVariable = 1;


myButton.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

        // How would one access myVariable here?

    }

});

侦听器有什么方法可以访问myVariable或被传递myVariable而不将侦听器创建为实际的命名类?


一只名叫tom的猫
浏览 497回答 3
3回答

慕娘9325324

从技术上讲,没有,因为匿名类不能具有构造函数。但是,类可以引用包含范围的变量。对于匿名类,这些可以是包含类的实例变量,也可以是标记为final的局部变量。编辑:正如彼得指出,您还可以将参数传递给匿名类的超类的构造函数。

呼唤远方

是的,通过添加一个返回“ 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)  );无需“最终”声明。

墨色风雨

这会做魔术int myVariable = 1;myButton.addActionListener(new ActionListener() {    int myVariable;    public void actionPerformed(ActionEvent e) {        // myVariable ...    }    public ActionListener setParams(int myVariable) {        this.myVariable = myVariable;        return this;    }}.setParams(myVariable));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java