[英]Java Subclasses that have different primitive data members, but same methods
[英]Java - data structure to contain a set of different subclasses of the same superclass
我需要某种数据结构,其中可以包含同一超类的异构子类,而我自己都实现了所有这些子类。
到目前为止,我正在尝试使用ArrayList<SuperClass> list = new ArrayList<SuperClass>();
然后,我假设我将能够将列表的每个位置转换为两个子类中的任何一个,但是效果不是很好。
我需要一种有效的方法来进行上述操作。
谢谢!
您可以使用任何存在的数据结构来做到这一点,我建议您使用List
或Set
。 例如:
Collection<Super> supers = new ArrayList<Super>();
现在,当你这样说:
我假设我将能够将列表的每个位置转换为任何一个子类,
那是一个无效的假设。 该集合将保留扩展Super
所有对象,但是您不能将每个元素任意转换为所需的任何对象。 如果要寻找这种类型的功能,则需要对每个元素进行一次instanceof
测试,示例如下:
for(Super currentSuper : supers)
{
if(currentSuper instanceof SubA)
{
SubA subA = (Suba) currentSuper);
// do stuff with subA
}
else if(currentSuper instanceof SubB)
{
SubB subB = (SubB) currentSuper);
// do stuff with subB
}
}
范围视需要而定。
现在说到弗拉德:
更好的设计将不是测试实际的类,而只是调用虚拟方法,这在任何情况下都会做正确的事情
如果您可以保证所有潜在子类的功能,并且对覆盖您的类的人员没有任何问题(如果您没有将其标记为最终类),则无需执行测试实例。 相反,您的代码可能很简单:
for(Super currentSuper : supers)
{
currentSuper.doSomethingNifty();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.