NOTE:
我知道这是危险地接近许多其他问题。然而,我没有看到任何特别与Android的OnClickListener接口有关的东西。我在一般意义上问。通过匿名类扩展接口VS实例化
我明白通过一个匿名类... 一拉实例化一个接口的区别:和扩展接口
private final Runnable runnable = new Runnable() {
@Override
public void run() {
draw();
}
};
...。
public class ClassyClass implements Runnable {
...
//do other cool stuff here
...
@Override
public void run() {
draw();
}
...
//and more here
...
}
但是,除了从诸如OnClickListener
接口的明显好处是有很强的优势,以任一选项?
我认为扩展它将是明显的选择,因为您已经创建了该对象 - 不需要重复工作。这是正确的吗?
我问在一般意义上,但是,因为我目前Runnable
工作,如果它已经从任一选项我很想知道看到一个优势。
非常感谢。我赞赏具体的赞成/反对。最后一个问题。我有点得到它,我已经看到其他人谈论泄漏(在前1),但你能具体解释为什么它发生? – BrassApparatus
@BrassApparatus:发生这种情况的原因是,内部类通过设计隐式引用其封闭对象,以便能够访问其字段和方法。就像在第二个示例的打印机中有一个PrintBuilder字段,并将'this'作为Printer构造函数的参数传递。 –
@JBNizet陷阱,谢谢。我感谢所有的帮助。 – BrassApparatus