我有一些工作代码,因此使用泛型已经开始使代码看起来比它应该更混乱。
我是否可以废除泛型并使用接口来处理成员类型,构造函数类型,方法参数类型和方法返回类型?
通用提供什么,以上使用接口不会?我理解泛型在检索元素时会进行编译时检查(以便在过去停止错误的转换),但编译器是否会检测我是否尝试插入不是所需接口的子类型的类型?
答案 0 :(得分:4)
泛型使集合更安全。
如果您的工作代码中广泛使用了集合,我宁愿坚持使用 仿制药。
此外,正如臭名昭着的谚语所述,“界面中的程序,而不是实施”,界面更具灵活性而不是类型安全。
泛型也用于类,方法,接口,变量,构造函数。等....
有关详细信息,请参阅以下链接:
http://en.wikipedia.org/wiki/Generics_in_Java
http://www.oracle.com/technetwork/articles/javase/generics-136597.html
答案 1 :(得分:0)
接口向所有人宣告课程必须始终如何表现。另一方面,类型参数(泛型)让客户决定类在特定实例中的行为方式。
类型参数通过允许它仅使用一组方法和字段处理一系列对象类型来使类成为通用类,并提供编译时检查以确保每个特定实例仅使用指定的类型
如果您尝试使用接口提供这种灵活性,则必须编写相同方法和类的多个版本,其中每个版本基本相同但具有不同的显式类型。这将是无聊的(导致剪切和粘贴错误)和笨重,没有添加任何东西。
通用语法看起来有点时髦,但你很快就会习惯它,所以不要让尖括号的最初丑陋阻止你利用强大的功能。