cherami(cherami):接口可以实例化,但是不可以直接实例化,因为接口没有构造函数。通过类实现接口再将该类的实例赋值给接口对象是可以的,这是间接实例化。Runnable a =new Runnable () {
}
是可以的,如果你看过JBUILDER5生成的代码的话,你应该对这种形式不陌生!
例如:
add.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
show.setText("add ok");
}
}
);
add是一个JButton对象。
hahaha88:
* Runnable a1 =new Runnable () {}这样是不对的,因为接口不能被“直接实例化”。
* Runnable a1 =new Runnable () {
public void run() {
}
};
是对的,这实际上是一种构造内部类的”简写“,在这里:
- 首先构造了一个”implements Runnable “的无名local内部类(方法内的内部类)
- 然后构造了这个无名local内部类的一个实例
- 然后用Runnable来表示这个无名local内部类的type(OO多态)。
比如,你编译如下代码:
class CTest{
void m(){
Runnable a1 =new Runnable () {
public void run() {
}
};
}
}
你会得到2个类:
CTest.class
CTest$1.class
其中CTest$1.class就是这个无名local内部类
帖子地址:http://topic.csdn.net/t/20010903/22/270176.html
LZ:agreeman