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

Jar*_*rek 13 java

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

例如:

new AbstractAction() {
    actionPerformed(ActionEvent event) {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Sea*_*oyd 36

使用初始化程序块:

new AbstractAction() {

    {
        // do stuff here
    }

    public void actionPerformed(ActionEvent event) {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

初始化实例成员

通常,您可以使用代码在构造函数中初始化实例变量.使用构造函数初始化实例变量有两种选择:初始化块和最终方法.实例变量的初始化程序块看起来就像静态初始化程序块,但没有static关键字:

{
    // whatever code is needed for initialization goes here
}
Run Code Online (Sandbox Code Playgroud)

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

资源:


Jon*_*eet 7

目前还不是很清楚你的意思,但你可以使用初始化程序块在构建时执行代码:

new AbstractAction() {

    {
        // This code is called on construction
    }

    @Override public void actionPerformed(ActionEvent event) {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)


wee*_*ens 6

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

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

    actionPerformed(ActionEvent event) {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)