相关疑难解决方法(0)

Lambda表达式和通用方法

假设我有一个通用接口:

interface MyComparable<T extends Comparable<T>>  {
    public int compare(T obj1, T obj2);
}
Run Code Online (Sandbox Code Playgroud)

一个方法sort:

public static <T extends Comparable<T>> 
       void sort(List<T> list, MyComparable<T> comp) {
    // sort the list
}
Run Code Online (Sandbox Code Playgroud)

我可以调用此方法并将lambda表达式作为参数传递:

List<String> list = Arrays.asList("a", "b", "c");
sort(list, (a, b) -> a.compareTo(b));
Run Code Online (Sandbox Code Playgroud)

那会很好.

但现在如果我使接口非泛型,并且方法通用:

interface MyComparable {
    public <T extends Comparable<T>> int compare(T obj1, T obj2);
}

public static <T extends Comparable<T>> 
       void sort(List<T> list, MyComparable comp) {
}
Run Code Online (Sandbox Code Playgroud)

然后调用它:

List<String> list = Arrays.asList("a", "b", "c");
sort(list, (a, …
Run Code Online (Sandbox Code Playgroud)

java generics lambda java-8

103
推荐指数
3
解决办法
6万
查看次数

标签 统计

generics ×1

java ×1

java-8 ×1

lambda ×1