深化过程 。
去掉了一堆没有意义的代码 ,让代码更简洁。
前提条件 ,函数式接口。
一 从最原始的方法说起。
package com.company;
public class TestLambda {
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
}
}
interface ILike {
void lambda();
}
class Like implements ILike{
public void lambda() {
System.out.println("Like");
}
}
二 演化到静态内部类写法。
package com.company;
public class TestLambda {
static class Like2 implements ILike {
public void lambda() {
System.out.println("Like2.lambda");
}
}
public static void main(String[] args) {
ILike obj = new Like2();
obj.lambda();
}
}
interface ILike {
void lambda();
}
三 局部内部类实现
package com.company;
public class TestLambda {
public static void main(String[] args) {
//局部类用法。
class Like3 implements ILike {
@Override
public void lambda() {
System.out.println("Like3.lambda");
}
}
ILike obj = new Like3();
obj.lambda();
}
}
interface ILike {
void lambda();
}
四内部匿名类
package com.company;
public class TestLambda {
public static void main(String[] args) {
//匿名内部用法。
ILike obj = new ILike() {
@Override
public void lambda() {
System.out.println("like4.lambda");
}
};
obj.lambda();
}
}
interface ILike {
void lambda();
}
进一步烟花至 lambda
package com.company;
public class TestLambda {
public static void main(String[] args) {
//匿名内部用法。
/*
ILike obj = new ILike() {
@Override
public void lambda() {
System.out.println("like4.lambda");
}
};
*/
ILike obj = ()-> System.out.println("like4.lambda");
obj.lambda();
}
}
interface ILike {
void lambda();
}
就是糖。 要习惯。
练习下手感。
再写一个,熟悉下手感 。
package com.company;
public class TestLambda {
public static void main(String[] args) {
//匿名内部用法。
ILove obj = (int a) -> System.out.println("I love" + a);
obj.love(3 );
}
}
interface ILove {
void love(int a);
}
多写一个,去掉 参数的括号。
package com.company;
public class TestLambda {
public static void main(String[] args) {
//匿名内部用法。
ILove obj = (int a) -> System.out.println("I love" + a);
obj.love(3 );
ILove obj2 = a -> System.out.println("I love2 " + a);
obj2.love(3 );
}
}
interface ILove {
void love(int a);
}
总结,去掉平时写得很烦的东西。约定大于配置。
注意条件 ,实现只有一个方法的接口。(函数式接口。) 可以去掉参数的类型。