View.setOnClickListener( new View.OnClickListener(){
@override
public void onClick(View view){
//Some code implementing this method
}
});
这里的 OnClickListener
是在 View 内部声明的静态接口(interface)。因为它是静态的,所以它不会被归类为内部类(如果我在这里错了请纠正我)。
那我们如何使用匿名类来内联实现这个静态嵌套接口(interface)呢?
因为,据我所知,它们仅用于内联实现内部类,这些内部类是嵌套类型,没有用于封闭类型的 static 关键字。
最佳答案
首先:内部接口(interface)默认是“静态的”。不可能有一个不是静态的“内部”接口(interface)!参见 here有关这方面的更多想法。
从这个角度来看,接口(interface)就是:接口(interface)。它们是位于自己的 .java 文件中的顶级接口(interface),还是位于某个类中的接口(interface)都没有关系。
并且任何接口(interface)都可以使用匿名内部类来实现。
这就是全部内容。
回复评论:
so the inline implementation ie the anonymous class itself becomes an inner class of the interface it implements?
不,匿名内部类是围绕它的类的内部类。它恰好实现了一些接口(interface)。它不是接口(interface)的内部类。内部的真正含义是“物理”意义上的,就像位于其他代码块内部 的代码行一样。
class Outer {
class/interface Inner {
Inner
被称为内部类/接口(interface),因为它位于 inside Outer
中。
关于java - 静态嵌套接口(interface)的内联实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56607746/