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

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

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

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

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

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

请参阅此处了解更多

进一步 …

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

 public interface Processor { void execute(NotificationListener listener); interface NotificationListener { void processingCompleted(); } } 

太阳网站关于这个主题的另一个好读物就在这里

特别要注意的是,在实现接口时,不需要实现嵌套在其中的任何接口。

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

有趣的是,在源代码中它简单地说

 interface Entry  { .. } 

但是javadoc说

 public static interface Map.Entry 

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

-dbednar 2013-07-02

是。

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

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

我们在我们的应用程序中使用它,接口内部接口,基本上使用它作为特定于function的常量,因此不小心没有其他人会在项目的其他地方创建与此Service1相关的新常量。

示例代码:

 Public interface Service1{ public interface ServiceInter1{ public Interface In{ Declare your own constants } public Interface Out{ Declare your own constants } } } 

是的,我们可以定义。

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

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