【问题标题】:Nested Java Interfaces嵌套的 Java 接口
【发布时间】:2018-04-07 09:57:28
【问题描述】:

我在https://developer.android.com/training/basics/network-ops/connecting.html看到了这个接口声明:

public interface DownloadCallback<T> {
    interface Progress {
        int ERROR = -1;
        int CONNECT_SUCCESS = 0;
        int GET_INPUT_STREAM_SUCCESS = 1;
        int PROCESS_INPUT_STREAM_IN_PROGRESS = 2;
        int PROCESS_INPUT_STREAM_SUCCESS = 3;
    }
    void updateFromDownload(T result);
    ...
}

根据https://docs.oracle.com/javase/tutorial/java/IandI/interfaceDef.html,接口体只能包含

  • 抽象方法
  • 默认方法
  • 静态方法
  • 常量声明
  • 在这种情况下,接口主体包含另一个接口。你如何解释这个代码块?有人可以指点我正确的文档,以便我可以了解有关这种方法的更多信息吗?

    【问题讨论】:

    • 奇怪的是官方的 oracle 文档没有包含这个。
    • @user1506104 这是一个没有提到所有可能性的教程。
    • 你们在哪里查看完整的 java 语言文档?不管怎么说,还是要谢谢你。很抱歉用这个无用的问题打扰你。现在最好删除它。
    • 谢谢你们。我今天学到了非常重要的一课。干杯! ^.^

    标签: java android interface


    【解决方案1】:

    JLS §9.1.4:

    接口的主体可以声明接口的成员,即字段(§9.3)、方法(§9.4)、类(§9.5)和接口(§9.5)。

    用法就是OuterInterface.NestedInterface

    在您引用的代码中,嵌套接口仅用于包含常量,以便它们不会“泄漏”到实现 DownloadCallback 的类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 2011-07-09
      相关资源
      最近更新 更多