我们可以在接口中定义接口吗?
我想知道我们可以在接口中定义一个接口吗?喜欢
interface abc {
void show();
public interface xyz {
void read();
}
}
这是在采访中提出的问题。任何实际用途。
我想知道我们可以在接口中定义一个接口吗?喜欢
interface abc {
void show();
public interface xyz {
void read();
}
}
这是在采访中提出的问题。任何实际用途。
是的,我们可以做到。Java中嵌套接口的定义如下:
嵌套接口是其声明发生在另一个类或接口的主体中的任何接口。顶级接口是不是嵌套接口的接口。
有关详细信息,请参阅此处。
进一步。。。
一个原因可能是外部接口具有一个将回调实现作为参数的方法。在这种情况下,嵌套接口是回调方法必须实现的协定。我看不出有理由在顶层声明该回调接口。
public interface Processor {
void execute(NotificationListener listener);
interface NotificationListener {
void processingCompleted();
}
}
关于这个话题,太阳网站的另一个很好的阅读在这里
特别要注意的是,在实现接口时,不需要实现嵌套在其中的任何接口。
确定。。查看 java.util.Map 接口的源代码。映射接口包含一个嵌套的入口接口。
有趣的是,在源代码中,它只是说
interface Entry <K,V> {
..
}
但是javadoc说
public static interface Map.Entry<K,V>
我想这是因为嵌套接口是隐式的“公共静态”,即使源代码没有这么说。(但是接口内的方法是隐式公共的,不能是静态的,也就是说,接口中只允许使用实例方法)。
-dbednar 2013-07-02