频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
java8新特性之lambda方法引用和构造器引用实例讲解
2018-05-14 13:35:14      个评论    来源:I can   
收藏   我要投稿

一、方法引用:

若 Lambda 体中的功能,已经有方法提供了实现,可以使用方法引用

(可以将方法引用理解为 Lambda 表达式的另外一种表现形式)

1.对象的引用: 实例方法名

@Test
	public void test01(){
		Student st=new Student("里斯", 12, "男");
		Supplier su=()->st.getAge();
		System.out.println(su.get());
		
		Student stu=new Student("里斯", 18, "男");
		Supplier su1=stu::getAge;
		System.out.println(su1.get());
	}

2. 类名 :: 静态方法名

@Test
	public void test02(){
		BiFunction bi=(x,y)->Integer.compare(x, y);
		Integer apply = bi.apply(3, 4);
		System.out.println(apply);
		
		BiFunction bif=Integer::compare;
		Integer applyf = bif.apply(3, 4);
		System.out.println(applyf);
	}

3. 类名 :: 实例方法名

@Test
		public void test03(){
			BiPredicate< String, String> bi=(x,y)->x.equals(y);
			System.out.println(bi.test("w","W"));
			
			BiPredicate< String, String> bip=String::equals;
			System.out.println(bip.test("w","W"));
		}

注意:

①方法引用所引用的方法的参数列表与返回值类型,需要与函数式接口中抽象方法的参数列表和返回值类型保持一致!

②若Lambda 的参数列表的第一个参数,是实例方法的调用者,第二个参数(或无参)是实例方法的参数时,格式: ClassName::MethodName

二、构造器引用

构造器的参数列表,需要与函数式接口中参数列表保持一致!

类名 :: new

@Test
				public void test04(){
					//无参构造器
					Supplier s=()->new Student();
					System.out.println(s.get());
					
					Supplier s1=Student::new;
					System.out.println(s1.get());
					
					//有参构造器
					Function sf=(x)->new Student(x);
					System.out.println(sf.apply("name"));
					
					Function sffl=Student::new;
					System.out.println(sffl.apply("name"));
				}

注意:构造器引用的时候需要在对象中有建立对应的构造器.

点击复制链接 与好友分享!回本站首页
上一篇:最新java虚拟机面试题分享:G1 GC的回收机制
下一篇:Java设计模式之空对象模式实现教程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站