我希望有一个界面:
public interface CarManager<T extends Car> {
public T createCar(Map data);
public T saveCar(T t);
}
所以我可以这样做:
public class FiatManager<Fiat> implements CarManger {
public Fiat createCar(Map data) {
// ...
}
// ...
}
适用于延伸Car
的各种车型。
然而,当我尝试时,我收到一条错误,我没有实施createCar
确切的错误消息是:
The class 'FiatManager' must be declared abstract or the method Car createCar(Map data)' must be implemented.
答案 0 :(得分:4)
您忘记实施界面:
public class FiatManager implements CarManager<Fiat>
当然,您必须确保Fiat extends Car
。
另外,(正如@Thilo正确指出的那样)请注意FiatManager
不再是通用的,因为它已经被称为处理Fiat
(s)的那个。
答案 1 :(得分:2)
仅适用于Fiat
s,然后:
public class FiatManager implements CarManager<Fiat>
public Fiat createCar(Map data) {
// ...
}
// ...
}
对于所有Car
s:
public class FiatManager<T extends Car> implements CarManager<T>
public T createCar(Map data) {
// ...
}
// ...
}
答案 2 :(得分:1)
您需要将FiatManager
课程声明为:
public class FiatManager implements CarManager<Fiat>{
然后,您需要实现createCar
和saveCar
两种方法。
当然,假设您有一个Fiat
类扩展或实现Car
。
最后,请注意方法参数中的原始Map
!