我有一个名为GenericOrder的基类,可用于创建任何类型产品的订单,然后我有更具体的订单的子类.我的问题是我的ComputerOrder类和一个我要覆盖的方法.这是基类代码.
import java.util.List;
import java.util.ArrayList;
public class GenericOrder<T> {
private long orderNumber;
private List<T> products;
private T theClass;
public GenericOrder()
{
products = new ArrayList<T>();
orderNumber = System.currentTimeMillis();
}
public long getOrderNumber() {
return orderNumber;
}
public void addProduct(T newProduct) {
products.add(newProduct);
}
public int getNumberOfProducts() {
return products.size();
}
public List<T> getProducts()
{
return products;
}
public void setProducts(List<T> products)
{
this.products = products;
}
public T get()
{
return theClass;
}
public void set(T theClass)
{
this.theClass = theClass;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的子类代码.getProducts是我遇到问题的方法.
import java.util.ArrayList;
import java.util.List;
public class ComputerOrder<T> extends GenericOrder<T> {
private List<ComputerPart> computerParts = new ArrayList<ComputerPart>();
private String orderType = "Computer Parts";
public ComputerOrder() {
super();
}
public void addProduct(ComputerPart newProduct) {
computerParts.add(newProduct);
}
public String getOrderType() {
return orderType;
}
public int getNumberOfProducts() {
return computerParts.size();
}
public List<T> getProducts()
{
return computerParts;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误说不能转换List(ComputerPart)为List<T>
m0s*_*it0 11
错误非常明确:getProducts()声明返回a List<T>但你正在返回a List<ComputerPart>.我认为我们同意这两者并不相同.
看看你的代码看起来你实际上不需要泛型类,因为ComputerOrder只接受ComputerParts.你想要的是如下:
public class ComputerOrder extends GenericOrder<ComputerPart> {
@Override
public List<ComputerPart> getProducts() {
return computerParts;
}
}
Run Code Online (Sandbox Code Playgroud)