在方法引用中使用类型参数与其上限之间有区别吗?

Is there a difference between using a type parameter vs its upper bound in method references?

我正在为 Java 编程进行模拟考试,我遇到了一个问题。 这是我们在 class 中编写的方法,所以是正确的。

private List<String> zetOmNaarLijstVanString(List<? extends Object> lijst){
    return lijst.stream().map(Object::toString).collect(Collectors.toList());
}

这是我做的方法

private <E> List<String> zetOmNaarLijstVanString(List<E> lijst){
    return lijst.stream().map(E::toString).collect(Collectors.toList());
 }

区别在于第二种方法。我使整个方法通用。我真的不知道这是否是一个错误,因为我现在看不出这两种方法之间的区别。

有人可以帮我看看有什么不同吗(如果有的话)?

在您的特定示例中,没有区别。要进一步扩展它以查看实际差异,您可以以此为例:

编译和运行都很好,因为我们知道列表只包含字符串

private List<String> replaceAWithB(List<? extends String> list) {
    return list.stream().map(s -> s.replaceAll("a","b")).collect(Collectors.toList());
}

不会编译,因为我们不知道 E 是一个字符串

private <E> replaceAWithB(List<E> list) {
    return list.stream().map(s -> s.replaceAll("a","b")).collect(Collectors.toList());
}