有没有办法在Java中初始化匿名内部类?
例如:
new AbstractAction() {
actionPerformed(ActionEvent event) {
...
}
}
有没有办法在类声明中的某处使用putValue方法?
答案 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