我有两个名为“ BaseCatalog”和“ City”的类。 “ BaseCatalog”是“ City”的父类,换句话说,“ City”扩展了“ BaseCatalog”类。
我有一个名为“ getBaseCatalogObjects”的方法,该方法带有一个参数catalogType和
返回BaseCatalog对象的列表。根据给定的类型,列表的类型可能会有所不同,但它始终包含扩展主BaseCatalog类的对象。
因为此方法是通用方法,所以它始终会生成一个包含BaseCatalog对象的List。但是,在这种情况下,我确定列表中的每个BaseCatalog实例也是City对象:
List<BaseCatalog> baseCatalogObjects = getBaseCatalogObjects(CatalogType.CITY);
我想做的就是将这个“ baseCatalogObjects”列表转换成一个名为“ cityObjects”的列表,就像这样:
List<City> cityObjects = (List<City>) baseCatalogObjects;
是否有可能或有任何有效的方法来进行这样的转换,而无需创建新的java.util.List实例并遍历列表“ baseCatalogobjects”?
最佳答案
根据彼得的建议,您可以将方法签名更改为以下内容,
public <T extends BaseCatalog> List<T> getBaseCatalogObjects(Class<T> clazz, CatalogType type){}
然后,您可以将清单转换成return陈述式,例如:
(List<T>) list;
希望这可以帮助!
关于java - java.util.List中的类型转换元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6704171/