如何使这个Java方法通用

Sta*_*man 2 java oop generics methods generic-collections

我有一个java方法,我试图使通用,以便它可以采取2种不同类型的对象的列表作为参数.(如下所示的琐碎例子).这两个不同的对象都将始终具有方法getDate()和getHour().代码如下所示:

public <T> List<T> getListOfStuff(List<T> statistics) {

    List<T> resultList = new ArrayList<T>(statistics.size());

    if(statistics.size() > 0){
        resultList.add(statistics.get(0));

        int date = Integer.parseInt(resultList.get(0).getDate());
        int hour = Integer.parseInt(resultList.get(0).getHour());
    }
    return resultList;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.这两行不起作用:

int date = Integer.parseInt(resultList.get(0).getDate());
int hour = Integer.parseInt(resultList.get(0).getHour());
Run Code Online (Sandbox Code Playgroud)

错误说:"方法getDate()未定义类型T"和"方法getHour()未定义类型T"

它向我提出了向方法接收器添加强制转换的建议,但它不会让我使用T而是强制对象名称对我这样对我不起作用:

int date = Integer.parseInt((ObjectName1)resultList.get(0).getDate());
int hour = Integer.parseInt((ObjectName1)resultList.get(0).getHour());
Run Code Online (Sandbox Code Playgroud)

有什么方法可以做我想要的吗?

Jac*_* G. 5

您将要使用以下内容:

public <T extends ObjectName1> List<T> getListOfStuff(List<T> statistics) {
    List<T> resultList = new ArrayList<>(statistics.size());

    if (!statistics.isEmpty()) {
        resultList.add(statistics.get(0));

        int date = Integer.parseInt(resultList.get(0).getDate());
        int hour = Integer.parseInt(resultList.get(0).getHour());
    }

    return resultList;
}
Run Code Online (Sandbox Code Playgroud)

现在唯一List可以传递给此方法的s必须是hold ObjectName1或者是扩展它的对象.