rb.addActionListener(new ActionEvent(ae) {
public void actionPerformed(ActionEvent ae) {
nowCall(ae);
}
});
Run Code Online (Sandbox Code Playgroud)
其他方式
Thread th=new Thread(Runnable r) {
public void run() {
// do something
}
};
// notice the ending of above 2 snippets
Run Code Online (Sandbox Code Playgroud)
看到这两个,我真的很困惑.似乎没有确切的模式来声明一个匿名的内部类.
请解释匿名内部类的语法.
第二个是无效的,据我所知和测试.
更常见的是创建一个新的Runnable实现:
Thread th=new Thread(new Runnable() {
@Override
public void run() {
// This implements Runnable.run
}
});
Run Code Online (Sandbox Code Playgroud)
现在你可以覆盖run普通线程的方法:
Thread th=new Thread() {
@Override
public void run() {
// This overrides Thread.run
}
};
Run Code Online (Sandbox Code Playgroud)
...但我个人更喜欢Runnable在创建线程时单独指定.
现在你在最后注意到的区别仅在于表达式是否用作参数(例如,addActionListener方法或Thread(Runnable)构造函数,或者它是否只是直接赋值给变量.将整体new TypeName() { ... }看作单个表达式,它只是和...之间的不同:
Thread th = expression;
Run Code Online (Sandbox Code Playgroud)
和
Thread th = new Runnable(expression);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5088 次 |
| 最近记录: |