我有
public class Methods implements Comparator<String> {
public int compare(String std1,String std2)
{
return std1.compareTo(std2);
}
public static void main(String[] args) {
String[] string1={"Quan","Ha","Khai","Long","Han"};
Methods me=new Methods();
Arrays.sort(string1,me);// Arrays.sort(Object[] array,Comparator comp), me is Methods, not Comparator, but the Program also work well
System.out.println("Descending in string1: ");
for(String e: string1)
{
System.out.print(e+", ");
}
}
有人可以向我解释,为什么参数可以被上面程序中的方法对象替换。谢谢
答案 0 :(得分:3)
me
包含对Methods
类型实例的引用,该实例实现Comparator<String>
。因此,可以将其传递给期望Comparator<String>
的方法,例如Arrays
&#39; sort(T[] a, Comparator<? super T> c)
。
答案 1 :(得分:1)
类Methods
实现Comparator
接口,因此它也具有该接口的类型。
答案 2 :(得分:1)
Arrays.sort(string1,me);
由于您Methods
类实现了Comparator
,您也可以传递方法的对象。
答案 3 :(得分:1)
当你做Arrays.sort(string1,me)排序方法所期望的第二个参数是比较器,在你的情况下是方法。现在比较器内部调用compare方法并将结果最终传递给第一个参数,该参数只是一个排序列表