0
点赞
收藏
分享

微信扫一扫

lamdba表达式


lamdba表达式是为了避免匿名内部类定义过多

为什么要使用lambda表达式

  1. 避免匿名内部类定义过多
  2. 可以让你的代码看起来很简洁
  3. 去掉了一堆没有意义的代码,只留下核心的逻辑。

package com.xh.Thread;

/**
 * lamdba 表达式事实上是内部接口
 * 
 */
public class LamdbaTest {
	//3,定义一个静态内部类 
	static class Like2 implements Ilike{

		@Override
		public void lamdba() {
			System.out.println("I like lamdba2");
		}
		
	}
	public static void main(String[] args) {
		Ilike ilike = new Like();
		ilike.lamdba();
		
		ilike = new Like2();
		ilike.lamdba();
		
		
		//4 局部内部类
		class Like3 implements Ilike{

			@Override
			public void lamdba() {
				System.out.println("I like lamdba3");
			}
			
		}
		ilike = new Like3();
		ilike.lamdba();
		
		//5匿名内部类
		ilike = new Ilike() {
			@Override
			public void lamdba() {
				System.out.println("I like lamdba4");
			}
		};
		ilike.lamdba();
		
		//6用lamdba简化  对比一下省略部分代码
		ilike = ()->{
			System.out.println("I like lamdba5");
		};
		ilike.lamdba();
	}
}

//定义一个函数接口
interface Ilike{
	void lamdba();
}

//实现类
class Like implements Ilike{
	@Override
	public void lamdba() {
		System.out.println("I  Like  lamdba ");
	}
}

lamdba表达式_System


说明lamdba表达式在此发挥了作用。

ilike = ()->{
 System.out.println(“I like lamdba5”);
 }

package com.xh.Thread;

//局部内简化变成匿名内部类
public class LamdaTest02 {
	
	//定义一个全局内部类
	static class Face1 implements IFace{
		@Override
		public void face(int a) {
			System.out.println("也就是吧外部类移动到外部类-->" + a);
		}
	}
	
	public static void main(String[] args) {
		IFace iFace = new Face();
		iFace.face(2);
		
		Face1 face1 = new Face1();
		face1.face(111);
		
		//来一个局部内部类
		class Face2 implements IFace{
			@Override
			public void face(int a) {
				System.out.println("我是局部内部类-->" +a );
			}
		}
		Face2 face2 = new Face2();
		face2.face(110);
		
		//在一步简化变成匿名内部类
		iFace =(int a)-> {
			System.out.println("我是lamda1号-->" +a);
		
		};
		
/*		//简化1,参数类型
		iFace =(a)-> {
			System.out.println("我是lamda1号-->" +a);
		};
		
		iFace =(a,b)-> {
			System.out.println("我是lamda1号-->" +a);
			System.out.println("我是lamda2号-->" +a;)
		};
		
		//简化2.简化括号
		iFace = a-> {
			System.out.println("我是lamda1号-->" +a);
		};*/
		
		//简化3,去掉花括号
		iFace = a-> 
			System.out.println("我是lamda2号-->" +a);
			//总结 
			//lambda 表达是只能有一行代码的情况下才能简化为一行,如果有多行,那么就用代码块包裹
			//提前需要接口为函数式接口
			//多个参数也可以去掉参数类型,要去掉就都要去掉,必须加上括号
		iFace.face(520);
		}
	}

//重要。这个必须要有
interface IFace{
	void face(int a);
	// void face (int a,int b);
}


class Face implements IFace{
	@Override
	public void face(int a) {
		System.out.println("注意实现接口必须要重写接口里边的方法 --->" + a);
	}
	
}


举报

相关推荐

0 条评论