我经常看到人们为听众编写内部类,比如swing。
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//some action
}
});在我的大学,有很多强调设计是解耦使用设计模式,如MCV或MVP。
我什么时候想要使用内部类而不是解耦的方式来实现它呢?
我唯一的猜测是物体什么时候不需要交互?(或者懒惰?)
(学生)
发布于 2014-10-22 19:11:49
这实际上被称为匿名内部类。如果只需要使用类一次,就会使用它。
当然,它也会减少代码的大小,除非它覆盖了许多特性(当然,为了便于阅读,我更喜欢匿名类,而不是体积小的类)。
发布于 2014-10-22 19:54:45
这种匿名内部类称为参数定义的内部类,并作为方法调用的一部分自动实例化。
在方法参数中,我们得到一个类的对象,它是ActionListener接口的子类,但是新创建的类没有任何名称(匿名),所以在控件通过这个语句之后,我们不能再次创建它的对象。
如果使用metohod 2,可以看到是否有10个按钮,每个按钮必须执行不同的任务,那么您必须创建10个ActionPerformed实现者类,并将对象传递给这些实现者类的addActionListener()方法。使用这种方法只为单个对象创建一个全新的类是完全愚蠢的。
这就是为什么大多数侦听器作为匿名内部类的对象传递的原因。
https://stackoverflow.com/questions/26515171
复制相似问题