有一个参数与有返回值的接口
@FunctionalInterface
public interface HavePararmHaveReturn {
int Lambad(int a);
}
用Lambda表达式实现这个接口
public class MethodReference {
public static void main(String[] ags) {
//如下代码显示代码多次别使用的话 会重写多次 代码重复
HavePararmHaveReturn impl1 = a -> a * 3;
HavePararmHaveReturn impl2 = a -> a * 3;
HavePararmHaveReturn impl3 = a -> a * 3;
//----------------------------------------------
HavePararmHaveReturn impl4 = a -> times(a);
HavePararmHaveReturn impl5 = a -> times(a);
HavePararmHaveReturn impl6 = a -> times(a);
//-----------所引用的方法----------------------
private static int times(int a) {
return a*3;
}
//-----------方法引用的简介----------------------
//方法引用的语法:方法的隶属者::方法名
//隶属着:
//1.方法为静态方法static修饰的方法 它的隶属着为类名(times方法的隶属着为MethodReference),
//2.非静态方法的隶属者为new MethodReference()
HavePararmHaveReturn impl7 = MethodReference :: times;
HavePararmHaveReturn impl8 = MethodReference :: times;
HavePararmHaveReturn impl9 = MethodReference :: times;
//注意:
//1.接口中定义的参数列表中的参数类型和个数必须和方法中定义的参数保持一致。
//2.方法中的返回值类型也要和接口中的返回值类型保持一致。
}
//避免代码重复 现在创建一个私有的方法去实现重复代码的功能
//如果逻辑修改了,只需要修改这个私有的方法就可以了,不用每一个使用到这个方法的地方都要修改一遍
}