实现接口的几种方法
首先定义一个接口
interface Ilike{
public void lambda();
}
-
实现类
class Like implements Ilike{ @Override public void lambda(){ System.out.println("第一种实现方法"); } } public class LambdaDemo { public static void main(String[] args) { Ilike like = new Like(); like.lambda(); } }
-
静态内部类
public class LambdaDemo { static class Like2 implements Ilike{ @Override public void lambda() { System.out.println("第二种实现方法"); } } public static void main(String[] args) { Ilike like = new Like2(); like.lambda(); } }
-
局部内部类
public class LambdaDemo { public static void main(String[] args) { class Like3 implements Ilike{ @Override public void lambda() { System.out.println("第三种实现方法"); } } Ilike like = new Like3(); like.lambda(); } }
-
匿名内部类
public class LambdaDemo { public static void main(String[] args) { Ilike like = new Ilike() { @Override public void lambda() { System.out.println("第四种实现方法"); } }; } }
-
lambda表达式
public class LambdaDemo { public static void main(String[] args) { Ilike vlike = () -> { System.out.println("第五种实现方法"); }; like.lambda(); } }
lambda表达式简化
先定义接口
interface Ilove{
public void love(String name);
}
-
标准写法
public class lambdaDemo2 { public static void main(String[] args) { Ilove love = (String name) -> { System.out.println("I love " + name); }; love.love("小马"); } }
-
简化参数类型
public class lambdaDemo2 { public static void main(String[] args) { love = (name) -> { System.out.println("I love " + name); }; love.love("小马"); } }
-
简化括号
public class lambdaDemo2 { public static void main(String[] args) { love = name -> { System.out.println("I love " + name); }; love.love("小马"); } }
-
简化花括号
public class lambdaDemo2 { public static void main(String[] args) { love = name -> System.out.println("I love " + name); love.love("小马"); } }
总结:
-
lamdba表达式在只有一行代码的情况下才能简化成一行,如果有多行,那就必须用代码块包裹。
-
前提是接口为函数式接口(只有一个函数的接口)
-
多个参数也可以去掉参数类型,要去掉就都去掉,必须加括号