我有一些工作代码,使用泛型已经开始使代码看起来比它应该的更混乱。
我是否有可能取消泛型并使用成员类型、构造函数类型、方法参数类型和方法返回类型的接口?
泛型会提供什么,而上述使用接口不会提供什么?我知道泛型在检索元素时会进行编译时检查(以停止错误的转换——就像过去一样),但是如果我尝试插入不是所需接口的子类型的类型,编译器不会检测到吗?
泛型使集合更加类型安全。
如果在您的工作代码中广泛使用集合,我会更喜欢坚持使用泛型。
此外,正如臭名昭著的谚语所说,“接口中的程序,而不是实现中的程序”,接口是为了灵活性而不是类型安全。
泛型也用于类、方法、接口、变量、构造函数。ETC....
有关详细信息,请参阅这些链接:
http://en.wikipedia.org/wiki/Generics_in_Java
http://www.oracle.com/technetwork/articles/javase/generics-136597.html
接口向所有人宣布一个类在任何时候都必须如何表现。另一方面,类型参数(泛型)让客户端决定类在特定实例中的行为方式。
类型参数通过允许类仅使用一组方法和字段来处理一系列对象类型,并提供编译时检查以确保每个特定实例仅使用指定的类型,从而使类成为通用的。
如果您尝试使用接口提供这种灵活性,您将不得不编写相同方法和类的多个版本,其中每个版本基本上做相同的事情,但具有不同的显式类型。这将很无聊(这会导致剪切和粘贴错误)并且体积庞大,根本不需要添加任何东西。
通用语法看起来有点古怪,但您很快就会习惯它,所以不要让尖括号最初的丑陋阻止您利用强大的功能。