Lamda表达式和内部类

文章目录

  • Lamda表达式和内部类
  • 总结

Lamda表达式和内部类

public class Dome1 {
	//使用内部类实现接口
	static class Lamda2 implements Lamda {
		@Override
		public int find(int a, String b) {
			System.out.println(b);
			return a+1;
		}
	}
	
	public static void main(String[] args) {
		Lamda lamda = new Lamda1();
		int t = lamda.find(1, "zzt1");
		System.out.println(t);
		System.out.println("-----------------------------------------");
		Lamda lamda2 = new Lamda2();
		int t2 = lamda2.find(2, "zzt2");
		System.out.println(t2);
		System.out.println("-----------------------------------------");
		//使用局部内部类实现接口
		class Lamda3 implements Lamda {
			@Override
			public int find(int a, String b) {
				System.out.println(b);
				return a+1;
			}
		}
		Lamda lamda3 = new Lamda3();
		int t3 = lamda3.find(3, "zzt3");
		System.out.println(t3);
		System.out.println("-----------------------------------------");
		//使用匿名内部类
		Lamda lamda4 = new Lamda() {
			@Override
			public int find(int a, String b) {
				System.out.println(b);
				return a+1;
			}
		};
		int t4 = lamda4.find(4, "zzt4");
		System.out.println(t4);
		System.out.println("-----------------------------------------");
		//使用Lamda表达式
		/*
		  当参数的个数只有一个时,括号可以省略;
		  当函数中语句只有一句时,大括号可以省略;
		  前提是接口为函数式接口(只包含一个抽象方法)
		*/
		Lamda lamda5 = (a,b)->{
			System.out.println(b);
			return a+1;
		};
		int t5 = lamda5.find(5, "zzt5");
		System.out.println(t5);
		System.out.println("-----------------------------------------");
	}
}

interface Lamda {
	int find(int a, String b);
}

//实现Lamda接口
class Lamda1 implements Lamda {
	@Override
	public int find(int a, String b) {
		System.out.println(b);
		return a+1;
	}
}

总结

当参数的个数只有一个时,括号可以省略;
当函数中语句只有一句时,大括号可以省略;
前提是接口为函数式接口(只包含一个抽象方法)才能使用Lamda表达式。

你可能感兴趣的:(java基础,java,lambda,接口,内部类)