首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将参数传递给匿名类?

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

Stack Overflow用户
提问于 2011-02-25 00:04:07
回答 9查看 95.1K关注 0票数 152

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

代码语言:javascript
复制
int myVariable = 1;

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

有没有办法让侦听器访问myVariable或传递myVariable,而不将侦听器创建为实际的命名类?

EN

回答 9

Stack Overflow用户

发布于 2012-08-31 06:34:35

是的,通过添加一个返回'this‘的初始化器方法,并立即调用该方法:

代码语言:javascript
复制
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)  );

不需要'final‘声明。

票数 351
EN

Stack Overflow用户

发布于 2011-02-25 00:06:27

如下所示:

代码语言:javascript
复制
final int myVariable = 1;

myButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // Now you can access it alright.
    }
});
票数 21
EN

Stack Overflow用户

发布于 2014-12-18 21:46:01

这将会产生魔力

代码语言:javascript
复制
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));
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5107158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档