我倒不是大神,试着解释一下。
首先举个例子,这几天在看老毕的GUI,常看到下面这个用法:
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
这个东西其实就是实现窗口右上角的小叉叉的关闭功能。
所以先说说匿名,匿名就是 new Class() 这个东西 如果加上左边就很好理解了。其实匿名的对象就是无法创建对象的类(抽象类等)或者是只用一次而不需要引用地址的类(比如方法非静态又只想用一次没必要创建对象后把地址值留住)。
就像这个例子里的WindowAdapter其实是一个抽象类,我想要一个对象就要用一个类重写他的方法,但是我用只想用一次所以觉得很不划算。于是我创建一个匿名的对象然后再后面的方法体中直接重写了我需要用到的方法。既然重写他了,所以就可以称其是一个类,其实new过了之后他的本质是一个对象,所以这种做法可以等价于是定义了一个WindowAdapter子类,并重写了函数后创建了一个对象。但是显然这种匿名内部类的写法更加简洁。
以上仅为个人见解,期待真正大神。
|