【问题标题】:Inline implementation of static nested interfaces静态嵌套接口的内联实现
【发布时间】:2019-06-15 05:53:40
【问题描述】:
View.setOnClickListener( new View.OnClickListener(){
    @override
    public void onClick(View view){
            //Some code implementing this method
              }
      });

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

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

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

【问题讨论】:

    标签: java android interface inner-classes


    【解决方案1】:

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

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

    任何接口都可以使用匿名内部类来实现。

    这就是真正的全部。

    回复评论:

    所以内联实现,即匿名类本身成为它实现的接口的内部类?

    不,匿名内部类是围绕它的类的内部类。它恰好实现了一些接口。它不是接口的内部类。内部实际上是“物理”意义上的,就像位于内部其他代码块的代码行。

    class Outer {
      class/interface Inner {
    

    Inner 被称为内部类/接口,因为它存在于内部 Outer

    【讨论】:

      猜你喜欢
      • 2016-05-06
      • 2016-01-15
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多