假设我有一个通用接口:
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)