静态嵌套接口的内联实现

Inline implementation of static nested interfaces

View.setOnClickListener( new View.OnClickListener(){
    @override
    public void onClick(View view){
            //Some code implementing this method
              }
      });

这里OnClickListener是View内部声明的静态Interface。由于它是静态的,因此不会被归类为内部 class(如果我在这里错了请纠正我)。

那我们如何使用匿名class内联实现这个静态嵌套接口呢?

因为,据我所知,它们仅用于内联实现内部 classes,这些嵌套类型没有封闭类型的 static 关键字。

首先:内部接口默认是"static"。不可能有一个 "inner" 接口不是静态的!有关这方面的更多想法,请参阅

从这个角度来看,接口就是:接口。无论它们是位于自己的 .java 文件中的顶级界面,还是位于某个 class 左右的界面中,都没有关系。

并且可以使用匿名内部实现任何接口class。

仅此而已。

回复评论:

so the inline implementation ie the anonymous class itself becomes an inner class of the interface it implements?

不,匿名内部 class 是环绕它的 class 的内部 class。它恰好实现了一些接口。它不是接口的内部 class。内部的真正含义是 "physical",就像位于 内部 其他代码块中的代码行一样。

class Outer {
  class/interface Inner {

Inner 被称为内部 class/interface 因为它生活在 内部 Outer