我一直在尝试使用泛型参数获取泛型方法,但我似乎无法使其工作。这是宣言:
/**
* Set items as table rows content
*
* @param rows - table row content
*/
public abstract void setItems(List<?> rows);
以下是实施:
@Override
public void setItems(List<Dto> bonuses) {
//code here
}
Dto
是一个实际的类,但编译器说它看不到它的父级。
Table类型的方法setItems(List)必须覆盖或 实现超类型方法
如果我在泛型声明中将其定义为单独的参数,那么编译器会说我的新类型隐藏了已经定义的类
我无法对编译器说我想在此实现中使用具体参数。
我已经尝试将其更改为键入而不是通配符,但产生相同的结果。如何使用具体实现(Dto
)?
答案 0 :(得分:1)
在评论中这样做@Jägermeister说:
public abstract class TestClass<T> {
public abstract void setItems(List<T> rows);
}
使用:
public class Test extends TestClass<Dto> {
@Override
public void setItems(List<Dto> rows) {
//TODO
}
}
或者您可以将方法定义为
public abstract void setItems(List rows);
并使用
public void setItems(List rows) {....
但这不是好办法!