Wil*_*ran 5 java inheritance casting list downcast
我无法将List of Fruit转换为List中包含的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();
Run Code Online (Sandbox Code Playgroud)
如何投射橙子以使其成为橙类列表?这是一个糟糕的设计模式吗?基本上我从服务器获取JSON响应是一个水果列表.对于Web服务的每个特定调用,我知道Fruit将获得什么子类,因此我需要适当地转换该List.
如果您知道每个特定的调用,您将获得什么子类的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();
Run Code Online (Sandbox Code Playgroud)
编辑:通过模板我的意思是泛型类型.对不起,我现在有太多的C++了