【发布时间】:2023-03-24 02:13:01
【问题描述】:
有没有办法在 Java 中初始化匿名内部类?
例如:
new AbstractAction() {
actionPerformed(ActionEvent event) {
...
}
}
有什么方法可以在类声明的某处使用例如 putValue 方法吗?
【问题讨论】:
-
你是什么意思?当你说
new时,你已经在初始化了。
标签: java
有没有办法在 Java 中初始化匿名内部类?
例如:
new AbstractAction() {
actionPerformed(ActionEvent event) {
...
}
}
有什么方法可以在类声明的某处使用例如 putValue 方法吗?
【问题讨论】:
new 时,你已经在初始化了。
标签: java
使用初始化块:
new AbstractAction() {
{
// do stuff here
}
public void actionPerformed(ActionEvent event) {
...
}
}
通常,您会将代码 初始化一个实例变量 构造函数。那里有两个 使用构造函数的替代方法 初始化实例变量: 初始化块和最终方法。 例如初始化块 变量看起来就像静态的 初始化程序块,但没有 静态关键字:
{
// whatever code is needed for initialization goes here
}
Java 编译器复制初始化程序 阻塞到每个构造函数中。 因此,可以使用这种方法 在之间共享一段代码 多个构造函数。
来源:
【讨论】:
不太清楚你的意思,但是你可以使用初始化块在构造时执行代码:
new AbstractAction() {
{
// This code is called on construction
}
@Override public void actionPerformed(ActionEvent event) {
...
}
}
【讨论】:
您可以使用实例初始化部分:
new AbstractAction() {
{
//initialization code goes here
}
actionPerformed(ActionEvent event) {
...
}
}
【讨论】:
或者你可以只从内部类访问外部类的变量。
http://en.wikibooks.org/wiki/Java_Programming/Nested_Classes#Anonymous_Classes
【讨论】: