java - 静态嵌套接口(interface)的内联实现

标签 java android interface inner-classes

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/

相关文章:

java - 如何让 Proguard 用优化后的 jar 覆盖原来的 jar?

java - 需要将结果写入 Xls 中

android - 如何使用 Delphi XE6 区分 Firemonkey TListView 项目上的 OnClick 和 Swipe

android - 垂直搜索栏 float 文本问题

java - 帮助在 Java 中实现 Runnable

java - 如何将 ArrayList 拆分为两个新的 ArrayList?

java - com.google.gson.JsonSyntaxException : Expected BEGIN_ARRAY but was STRING

java - 如何从 GWT 的序列化策略中删除实现类型?

java - 如何在模型- View - Controller 中为模型设计接口(interface)?

typescript - 如何在 TypeScript 接口(interface)对象中定义可选数据?