必需和提供的接口有什么区别

Mic*_*gus 9 java oop uml modeling interface

我一般都知道:

接口是一种引用类型,它类似于一个类,它只能包含常量,方法签名,默认方法,静态方法和嵌套类型.方法体仅适用于默认方法和静态方法.接口无法实例化 - 它们只能由类实现或由其他接口扩展?

但是必需和提供的接口有什么区别?

Ale*_*eks 18

提供和所需的接口总是参考接口的概念,指出了观点.

我希望以下图表能够阐明这个问题.

在此输入图像描述

在提升级别上,提供的接口是由类实现的接口(在最常见的意义上,例如,类B实现接口I).必需的接口是组件对接口的任何使用(例如,如果类A定义了具有接口I作为参数的方法,则这意味着类A具有所需的接口I).


Dun*_*nes 6

必需的和提供的接口似乎是与 UML 相关的术语,其中提供的接口描述了一个类提供的功能,而必需的接口描述了另一个类所需的功能:进一步阅读。

在Java中,所有接口都是相同的;提供/必需之间没有区别。

以前的链接不再有效,但https://www.ibm.com/developerworks/rational/library/dec04/bell/index.html可以提供帮助


Hur*_*rda 5

我认为你混淆了一般意义上的界面和语言特定的结构,也称为界面。

一般意义上的接口意味着两个部分/对象/系统之间的交互点。在非常低的层次上,您可以说一个对象的所有公共成员(方法 + 字段)组成了它的接口。

在更高的抽象级别,程序员通常将 API 视为库/系统的接口。但这并不意味着这个 API 只包含一个 Java 接口。API 包含所有对象、方法、构造函数、配置文件......这些都是由库的用户使用的。这可能是你需要和提供的接口。

如果您编写 java libary,您通常需要 Java 标准库的 API(java 包中的所有内容)——这将是所需的接口。(它可以由任何实现的 JVM 提供,例如 Android 使用与 Java 相同的接口,但它不是 Java)另一方面,您的库也会公开一些接口 - 人们可以使用您的库的方式 - 那将是调用提供的接口。(同样,如果我说接口,我不是指一个 Java 接口,它可能是几个接口 + 实现 + 一些值类的混合体)

您可能会遇到的另一个术语是 SPI服务提供者接口,它类似于 API,但 SPI 的用户不会调用此接口,而是实现它并将其公开回原始系统。这是一种描述插件接口的方式。