1

我有一些工作代码,使用泛型已经开始使代码看起来比它应该的更混乱。

我是否有可能取消泛型并使用成员类型、构造函数类型、方法参数类型和方法返回类型的接口?

泛型会提供什么,而上述使用接口不会提供什么?我知道泛型在检索元素时会进行编译时检查(以停止错误的转换——就像过去一样),但是如果我尝试插入不是所需接口的子类型的类型,编译器不会检测到吗?

4

2 回答 2

5

泛型使集合更加类型安全

如果在您的工作代码中广泛使用集合,我会更喜欢坚持使用泛型。

此外,正如臭名昭著的谚语所说,“接口中的程序,而不是实现中的程序”,接口是为了灵活性而不是类型安全。

泛型也用于类、方法、接口、变量、构造函数。ETC....

有关详细信息,请参阅这些链接:

http://en.wikipedia.org/wiki/Generics_in_Java

http://www.oracle.com/technetwork/articles/javase/generics-136597.html

于 2012-07-13T09:12:14.287 回答
0

接口向所有人宣布一个类在任何时候都必须如何表现。另一方面,类型参数(泛型)让客户端决定类在特定实例中的行为方式。

类型参数通过允许类仅使用一组方法和字段来处理一系列对象类型,并提供编译时检查以确保每个特定实例仅使用指定的类型,从而使类成为通用的。

如果您尝试使用接口提供这种灵活性,您将不得不编写相同方法和类的多个版本,其中每个版本基本上做相同的事情,但具有不同的显式类型。这将很无聊(这会导致剪切和粘贴错误)并且体积庞大,根本不需要添加任何东西。

通用语法看起来有点古怪,但您很快就会习惯它,所以不要让尖括号最初的丑陋阻止您利用强大的功能。

于 2012-07-14T20:56:42.827 回答