java8 方法引用的问题,求大佬帮忙解答一哈诶

java8 方法引用的问题,求大佬帮忙解答一哈诶

直接上代码
一个class,里面有一个a,方法,并且重载了一次
class Haha{
public int a(){
return 1;
}

public int a(Person p1,Person p2){
return 0;
}
}

public class Test {
public static void main(String[] args) {
//应用对象的实例方法 对象::实例方法名
Haha haha= new Haha();
//1方法引用
Arrays.sort(people,haha::a);
//2有参的匿名内部类
Arrays.sort(people, new Comparator() {
@Override
public int compare(Person o1, Person o2) {
return haha.a(o1,o2);
}
});
//3无参的匿名内部类
Arrays.sort(people, new Comparator() {
@Override
public int compare(Person o1, Person o2) {
return haha.a();
}
});
}
}

我想问的是这个haha::a的方法引用代替的是我有参的a方法,这种是一种约束吗?我理解的这里的方法引用代替的必须是Comparator接口的compare(T o1, T o2)方法,这个方法必须是传2个参数。
但是如果这样的话,对于String又不一样。
String[] strArr = {"",“s”," "};
Arrays.sort(strArr,String::compareTo);
String 的compareTo 只需要传一个参数。

求大佬们帮忙看看解答一下。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值