在学习lambda的时候遇到一个问题,函数式编程在lambd传递代码实现接口的时候,参数可以传递可以不用传全部
1.定义一个类
```
// 包含两个方法,test3方法,包含三个参数,其中第一个参数类型为类本身,test2方法,两个参数,两个方法的后两个参数类型相同
static class CC{
String name;
CC(String name){
this.name = name;
}
static void test3(CC c1, int a,int b){
}
void test2(int a,int b){
System.out.println(this.name);
System.out.println("实现类");
System.out.println("sum:" + (a + b));
}
}
```
2.定义函数式接口,参数列表与第一步test3方法类型类型一致
interface BB{
void test(CC cc,int a,int b);
}
3.编写主程序
public static void main(String[] args) {
BB b2 = CC::test2;
CC c1 = new CC("c1");
b2.test(c1,1,2);
}
4.结果输出
从定义处可知,函数传参为定义的是两个参数的方法,调用的时候是调用的三个参数的方法,实际实现是test2
5.结论
经过多次尝试,得到以下结论
- 函数式接口的第一个参数实现类本身
- 函数编程的实现可以不写第一个参数(既类型为本身的那个参数)
- 在运行时,类的实例本身作为第一个参数参与函数计算
6.猜想
1.函数编程是动态传递“代码”,也是对接口实现的一种,普通接口是否也可以这样操作 2.实操---》编译报错
多有不足