我无法将 Fruit 列表向下转换为列表中包含的 Fruit 子类。
public class Response {
private List<Fruit> mFruitList;
public List<Fruit> getFruitList() {
return mFruitList;
}
}
public class Fruit {
}
public class Orange extends Fruit {
}
List<Fruit> oranges = response.getFruitList();
如何转换橙子使其成为橙子类的列表?这是一个糟糕的设计模式吗?基本上我从一个水果列表的服务器得到一个 JSON 响应。对于对 Web 服务的每个特定调用,我知道我将获得 Fruit 的哪个子类,因此我需要适本地转换该列表。
最佳答案
如果您知道每个特定调用将获得 Fruit 的哪个子类,那么您应该使用泛型而不是强制转换列表。
public class Response<T extends Fruit> {
private List<T> mFruitList;
public List<T> getFruitList() {
return mFruitList;
}
}
Response<Orange> response = // create
List<Orange> oranges = response.getFruitList();
编辑:我所说的模板是指通用类型。抱歉,我现在 C++ 太多了
关于java - 列表对象的继承和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361052/