我们可以在界面中定义接口吗?

时间:2010-02-25 06:42:40

标签: java interface

我想知道我们可以在界面中定义一个接口。  喜欢

interface abc {
    void show();
    public interface xyz {
        void read();
    }
}

这是在采访中提出的问题。任何实时使用。

6 个答案:

答案 0 :(得分:42)

是的,我们可以做到。 java中嵌套接口的定义如下:

  

嵌套接口是任何接口,其声明发生在另一个类或接口的主体内。顶级接口是不是嵌套接口的接口。

请参阅this了解更多信息。

进一步......

一个原因可能是外部接口有一个将回调实现作为参数的方法。在这种情况下,嵌套接口是回调方法必须实现的契约。我没有理由在顶层声明回调接口。

public interface Processor {
   void execute(NotificationListener listener);

    interface NotificationListener {
        void processingCompleted();
    }  
}

Sun网站关于此主题的另一个好读物是here

特别要注意,当你实现一个接口时,你就是 不需要实施任何 嵌套在。内的接口。

答案 1 :(得分:7)

当然..查看java.util.Map接口的SOURCE CODE。 Map接口包含一个嵌套的Entry接口。

有趣的是,在源代码中它只是说

interface Entry <K,V> {
  ..
}

但是javadoc说

public static interface Map.Entry<K,V>

我想这是因为嵌套接口隐式“公共静态”,即使源代码没有这么说。 (但是接口内部的方法是公开的,并且不能是静态的,也就是说,接口中只允许实例方法。)

-dbednar 2013-07-02

答案 2 :(得分:6)

您可以自己测试一下,并在30秒内获得完全明确,无意见,无风险的答案。

可能永远等待论坛上可能不正确的回应是比较而不是理性的探究模式。

答案 3 :(得分:1)

我们在申请中使用它, 接口内部接口,使用它基本上是功能特定的常量, 所以不小心没有其他人会在项目的其他地方创建与此Service1相关的新常量。

示例代码:

Public interface Service1{

  public interface ServiceInter1{

   public Interface In{
    Declare your own constants
   }

   public Interface Out{
      Declare your own constants
   }

 }

}

答案 4 :(得分:0)

是的,我们可以定义。

Inside Map界面定义Entry如下所示。 公共接口地图{

/**
 * Map.Entry is a key/value mapping which is contained in a Map.
 */
public static interface Entry<K, V> {
    .....some loigic
 }
}

答案 5 :(得分:0)

此功能的真正用途是通过提供Facade接口来简化复杂的系统。 -检查外观设计模式。

https://en.wikipedia.org/wiki/Facade_pattern