区别于;实施;及;所有实现的接口”;在JavaAPI中
JavaAPI告诉我特定类实现了哪些接口。 但是有两种不同类型的信息,我不太确定这意味着什么。例如,“TreeSet”类:有以下信息:区别于;实施;及;所有实现的接口”;在JavaAPI中,java,interface,uml,implements,Java,Interface,Uml,Implements,JavaAPI告诉我特定类实现了哪些接口。 但是有两种不同类型的信息,我不太确定这意味着什么。例如,“TreeSet”类:有以下信息: All Implemented Interfaces: Serializable, Cloneable, Iterable<E>, Collection<E>, NavigableSet<E>, Set<E>, SortedSet<E> 所有实现的接口: 可序列化、可克隆、可移植、集合、导航
All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, NavigableSet<E>, Set<E>, SortedSet<E>
所有实现的接口:
可序列化、可克隆、可移植、集合、导航集、集合、分类集
而且:
public class TreeSet<E>
extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, Serializable
公共类树集
扩展抽象集
实现NavigableSet、可克隆、可序列化
现在,在“实现”下列出的接口比在“所有实现的接口”下列出的接口要少。这是什么意思
此外:假设我想画一个UML图,它指定Treeset和Set以及Collection之间的关系。我假设Treeset实现了Set和Collection(因为API这么说,但它没有列在implements下面,这让我有点困惑…?)。但同时集合也是集合的子接口。那么,画一个箭头表示两个接口之间的关系,画一个箭头表示TreeSet实现了Set(但没有指向Collection的箭头)就足够了吗?还是我需要画一个箭头表示TreeSet也实现了Collection
对不起我的英语。我希望我的问题可以理解。所有实现的接口”列表告诉您类直接实现的接口,以及这些接口派生的所有接口。因此,例如,
NavigableSet
是从Set
派生出来的TreeSet
不直接实现Set
,但是Set
是通过以下事实实现的:任何实现NavigableSet
的人也实现Set
实现
列出了直接实现的接口,哪些是实现
子句中明确指定的接口`
所有实现的接口的列表可以更长,因为类直接实现的接口可以扩展类间接实现的其他接口
TreeSet
直接实现NavigableSet
,但由于NavigableSet
扩展了SortedSet
,它扩展了Set
,它扩展了Collection
,它扩展了Iterable
,所有这些接口都是通过TreeSet
间接实现的,这就是它们被列在所有已实现接口列表中的原因
至于UML图,我会画一个箭头,指示“实现”仅在类和它直接实现的接口之间。间接实现的接口将显示在直接实现接口的层次结构中
例如:
Iterable
^
|
Collection
^
|
Set
^
|
SortedSet
^
|
NavigableSet
^
|
TreeSet
“所有实现的接口”包括那些由超类实现或由实现的接口(直接或不直接)扩展的接口
下面是Eclipse的类型层次结构给出的视图,它向您显示了其他接口的添加位置:
“所有实现的接口”列表只是TreeSet类内部实现的接口列表。
您总是可以通过在IDE(Eclipse、STS等)中打开源代码来验证这一点,如果您使用的是EclipseIDE,我建议您在IDE中打开TreeSet接口并验证这一点
public class TreeSet<E> extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, java.io.Serializable
{}
公共类树集扩展了抽象集
实现NavigableSet、Cloneable、java.io.Serializable
{}
您不会在TreeSet和Collection之间绘制箭头;这是从集合是一个集合这一事实推断出来的。