总结
在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。
(6)箭头后面就是实现方式了,这个同以前代码实现。
拓展示例
示例1
那么,当一个接口的唯一方法涉及多个参数,此时 Lamda 写法又该怎么样呢?
我们不妨创建一个 MyService,里面包含一个带有参数的方法定义:
public interface MyService {
public void say(String name);
}
然后我们创建一个 Test 类,并在类里面添加一个该接口为参数的 test() 方法,以及主方法进行测试:
Java 8 以前的写法:
public class Test {
public static void main(String[] args){
test(new MyService() {
@Override
public void say(String name) {
System.out.println("hello : " + name);
}
});
}
public static void test(MyService service) {
service.say("jack");
}
}
程序运行结果为如下所示:
Java 8 Lamda 写法:
public class Test {
public static void main(String[] args){
test((name) -> System.out.println("hello : " + name));
}
public static void test(MyService service) {
service.say("jack");
}
}
运行结果,同样为:
经过上面两个例子,我们已经证实了,两种写法的运行效果完全是可以等价的,Lamda 写法看起来也更简洁。
另外,当参数只有一个的时候,参数的括号也可以省去不写,例如,上面的 Lamda 写法还可以进一步简写:
test(name -> System.out.println("hello : " + name));
同理,如果接口的方法有多个参数的时候,Lamda 参数括号里也需要传递多个参数。
示例2
我们将接口里面的 say(String name) 方法,增加一个参数 age,改为如下:
public interface MyService {
public void say(String name, int age);
}
那么对应的方法调用就成为了如下:
Java 8 前写法:
public class Test {
public static void main(String[] args){
test(new MyService() {
@Override
public void say(String name, int age) {
System.out.println("hello : " + name + ", I am " + age);
}
});
}
public static void test(MyService service) {
service.say("jack", 28);
}
}
Java 8 Lamda 写法:
public class Test {
public static void main(String[] args){
test((name, age) -> System.out.println("hello : " + name + ", I am " + age));
}
public static void test(MyService service) {
service.say("jack", 28);
}
}
两种写法的输出结果都是:
可以看到,随着接口方法 say() 里的参数增加,Lamda 参数括号里面的参数也相应增加。
同理,当 Lamda 语句块里面只有一条语句的时候,我们可以通常省略语句块符号{},如上面的 Lamda语句:
test((name, age) -> System.out.println("hello : " + name + ", I am " + age));
但如果涉及多条语句的时候,就需要增加语句块 {}了,比如我们将 name 和 age 分别打印的话,则对应的 Lamda 写法为:
test((name, age) -> {
System.out.println("My name is"+ name);
System.out.println("I am "+ age);
});
变量作用域
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
[外链图片转存中…(img-XMiu3aVd-1715658466733)]
[外链图片转存中…(img-TXcwmCqT-1715658466733)]