rb.addActionListener(new ActionEvent(ae) {
public void actionPerformed(ActionEvent ae) {
nowCall(ae);
}
});
另一种方式
Thread th=new Thread(Runnable r) {
public void run() {
// do something
}
};
// notice the ending of above 2 snippets
看到这两个我真的很困惑,似乎没有确切的模式来声明一个匿名内部类。
请解释匿名内部类的语法。
最佳答案
据我所见和测试,第二个无效。
更常见的是创建一个新的 Runnable 实现:
Thread th=new Thread(new Runnable() {
@Override
public void run() {
// This implements Runnable.run
}
});
现在您可以覆盖普通线程的run
方法:
Thread th=new Thread() {
@Override
public void run() {
// This overrides Thread.run
}
};
...但我个人更喜欢在创建线程时单独指定 Runnable
。
现在您在最后注意到的区别只是表达式是否用作参数(例如 addActionListener
方法或 Thread(Runnable)
构造函数,或者它是否只是直接分配给变量。将整个 new TypeName() { ... }
视为一个表达式,它只是以下之间的区别:
Thread th = expression;
和
Thread th = new Runnable(expression);
关于java - 声明匿名内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5511864/