扩展泛型类只是为了简化或防止编写冗余代码有什么问题吗?
基本上我想做的是
class EnityGroup extends LinkedList<Entity>
{
....
}
但我看到的每个例子都是首选。
如果有的话,我不得不担心的问题,疑虑,冲突等。
答案 0 :(得分:1)
您正在寻找的是类型别名,这是其他编程语言(例如C或C ++)中提供的功能。 Java没有提供这样的功能。
对于类型系统EntityGroup
is-a LinkedList<Entity>
,所以不会发生任何不好的事情。接受LinkedList<Entity>
的每个方法都会接受EntityGroup
个实例。
唯一的缺点是构造函数不能直接用于您的子类,因此您不得不重新声明它们(可能将参数转发给超类构造函数)。
从多态的角度来看,这与拥有类型别名不同,因为EntityGroup
是另一种类型,它扩展了另一种类型,而不是LinkedList<Entity>
的不同名称。所以LinkedList.class != EntityGroup.class
,这可能会导致使用反射的代码出现问题,除非正确编写以自动检测层次结构中的类型。
继承是为了丰富或专门化类的行为,在这种情况下不是这种情况。你基本上使用一个特性来获得一些不是以这种方式获得的东西,而是通过类型别名来实现,遗憾的是,它不能用于Java。