gpt4 book ai didi

java - Java 中的封闭/嵌套接口(interface)

转载 作者:行者123 更新时间:2023-12-02 03:28:17 26 4
gpt4 key购买 nike

在查看javax.servlet.ServletRegistration接口(interface)的代码时,我遇到过一个封闭接口(interface)(Java 中的概念),即“interface Dynamic extends ServletRegistration, Registration.Dynamic”是 ServletRegistration 接口(interface)的封闭接口(interface)。

我不清楚以下关于Java中封装接口(interface)的要点

你能帮忙吗?

(1) 它们与编写两个单独/单独的文件/接口(interface)有何不同,如下所示?

Java 类文件 1:

interface ServletRegistration {
m1();
m2();
}

Java 类文件 2:

interface interface Dynamic extends ServletRegistration, Registration.Dynamic {
m3();
m4();
}

这与封闭有何不同?

(2)在上面的例子中,任何实现了ServletRegistration接口(interface)的人,是否也需要实现封闭接口(interface)(动态接口(interface))方法?

(3) 我们什么时候需要封闭接口(interface)?到目前为止,我还没有在我的任何项目中使用过它们。

(4) 嵌套接口(interface)与封闭接口(interface)有什么区别?能举个例子吗?

谢谢。

最佳答案

在我看来,你混淆了这些术语。 Dynamic 不是“ServletRegistration 接口(interface)的封闭接口(interface)”,它嵌套在 ServletRegistration 内部。您可以说 ServletRegistration 包含 ServletRegistration.Dynamic

嵌套接口(interface)类似于嵌套静态类。它可以独立于其嵌套的接口(interface)来实现。

在您的示例中,嵌套Dynamic接口(interface)允许在同一包中定义两个不同的Dynamic接口(interface) - javax.servlet.ServletRegistration.Dynamicjavax.servlet.Registration.Dynamic - 您无法将这两个接口(interface)提取为具有相同名称的同一包中的顶级接口(interface)。

除此之外,将嵌套接口(interface)提取到顶级接口(interface)中没有什么区别,就像对嵌套静态类执行相同操作不会有区别一样。

When do we go for enclosing interfaces ?

如果将其表述为何时将接口(interface)嵌套在其他接口(interface)中?答案会更清楚 - 只要逻辑上有意义。例如,如果接口(interface) X 具有返回接口(interface) Y 的方法,并且没有其他接口(interface)使用接口(interface) Y,则将接口(interface) Y 声明为接口(interface) X 的嵌套接口(interface)可能是有意义的。

关于java - Java 中的封闭/嵌套接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38479455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com