如何在Java中初始化匿名内部类

18

有没有办法在Java中初始化匿名内部类?

例如:

new AbstractAction() {
    actionPerformed(ActionEvent event) {
    ...
    }
}

有没有办法在类声明的某个地方使用例如putValue方法?


你的意思是什么?当你说 new 时,你已经在初始化了。 - bluefoot
4个回答

42

使用初始化块:

new AbstractAction() {

    {
        // do stuff here
    }

    public void actionPerformed(ActionEvent event) {
    ...
    }
}

实例成员的初始化

通常情况下,你会在构造函数中放置初始化实例变量的代码。有两种替代方法可以用来初始化实例变量:初始化块和final方法。实例变量的初始化块看起来就像静态初始化块,但没有static关键字:

{
    // whatever code is needed for initialization goes here
}

Java编译器会将初始化块复制到每个构造函数中,因此这种方法可用于在多个构造函数之间共享代码块。

来源:


7

不太清楚您的意思,但您可以使用一个 初始化块 在构造时执行代码:

new AbstractAction() {

    {
        // This code is called on construction
    }

    @Override public void actionPerformed(ActionEvent event) {
    ...
    }
}

6
您可以使用实例初始化部分:
new AbstractAction() {
    {
       //initialization code goes here
    }

    actionPerformed(ActionEvent event) {
    ...
    }
}

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接