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

时间:2011-03-15 10:31:52

标签: java

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

例如:

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

有没有办法在类声明中的某处使用putValue方法?

4 个答案:

答案 0 :(得分:31)

使用初始化程序块:

new AbstractAction() {

    {
        // do stuff here
    }

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

初始化实例成员

  

通常,你会把代码放到   初始化一个实例变量   构造函数。那里有两个   使用构造函数的替代方法   初始化实例变量:   初始化程序块和最终方法。   例如,初始化程序块   变量看起来就像静态   初始化程序块,但没有   static keyword:

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

Java编译器复制初始化程序   阻塞到每个构造函数中。   因此,可以使用这种方法   共享一段代码   多个构造函数。

<强>来源:

答案 1 :(得分:7)

您的意思并不十分清楚,但您可以使用初始化程序块在构建时执行代码:

new AbstractAction() {

    {
        // This code is called on construction
    }

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

答案 2 :(得分:6)

您可以使用实例初始化部分:

new AbstractAction() {
    {
       //initialization code goes here
    }

    actionPerformed(ActionEvent event) {
    ...
    }
}

答案 3 :(得分:1)

或者你可以从内部类中访问外部类的变量。

http://en.wikibooks.org/wiki/Java_Programming/Nested_Classes#Anonymous_Classes