generics编程是多态的一个例子吗?

我正在做一个家庭作业(一个项目),其中一个标准是我必须以明显改善代码整体质量或function的方式利用多态性。

我做了一个哈希表,看起来像这样:

public class HashTable{ ... } 

Hashable是我制作的具有hash()函数的接口。

我知道使用generics这种方式可以提高代码的质量,因为现在HashTable几乎可以处理我想要的任何类型(例如,而不仅仅是整数或字符串)。 但我不确定它是否表现出多态性。

认为确实如此,因为E可以是任何实现Hashable的类型。 换句话说,HashTable是一个可以(几乎)使用任何类型的类。

但我不太确定 – 这多态吗? 也许我可以得到一些关于究竟多态性是什么的澄清?

提前致谢!


编辑:收到下面的答案后(见: 收到的第一个答案 ),我读了维基百科的文章,并发现了这个:

“在面向对象的编程社区中,使用参数多态的编程通常称为generics编程 。” (重点补充)

简而言之,多态性采用许多不同的类,这些类共享一个共同的基类(或接口),并将它们全部视为该公共基础的成员,而不知道或关心它们是哪个特定的inheritance类,或者它们如何精确地实现公共基类function。 在面向对象的编程中,多态性为您提供了问题域的那部分的相对高级视图 – 您说,“此代码不关心这些对象的具体细节 – 只是它们实现了一些常见的函数X ,Y,Z,“或”只是说它们都是基本类BaseClass.

您的示例使用多态,因为您定义了Hashable基类 – 并提供了一个仅关注它接收的对象的那个方面的函数。 Hashable对象可能有多种forms,但您的代码将它们全部视为单个基本类型。

是的,它被称为参数多态 。 你将它归类为多态的理由是现场的。

除了参数多态之外,你可能会调用哈希表中存储的对象的hashCode方法,这是John引用的多态的一个例子。 HashTable依赖于参数多态,而E依赖于(普通)多态。

虽然Rob的答案可能在某种技术意义上是正确的,但我认为这不是所要求的。 我认为这篇维基百科文章更有可能成为您的需求。