带有List的泛型参数的通用方法声明

时间:2016-07-04 09:37:24

标签: java generics

我一直在尝试使用泛型参数获取泛型方法,但我似乎无法使其工作。这是宣言:

/**
 * 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)?

1 个答案:

答案 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) {....

但这不是好办法!