`
一帆风顺
  • 浏览: 3523 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java8新特性 lambda表达式

阅读更多
	下面这几个接口都属于函数式接口(只有一个抽象方法的接口)
        注意:
            Comparator<T>也是一个抽象接口,虽然它有两个抽象方法 int compare(T o1, T o2)和boolean equals(Object obj)
            官方表示:
                Ifaninterfacedeclaresanabstractmethodoverridingoneofthepublicmethodsofjava.lang.Object,thatalsodoesnotcounttowardtheinterface'sabstractmethodcountsinceanyimplementationoftheinterfacewillhaveanimplementationfromjava.lang.Objectorelsewhere.
                如果接口声明了一个覆盖java.lang.Object的全局方法之一的抽象方法,那么它不会计入接口的抽象方法数量中,因为接口的任何实现都将具有java.lang.Object或其他地方的实现。
	/* Consumer<T>  消费性接口		void accept(T t);
	 * 
	 * Supplier<T>	供给型接口	T get();
	 * 
	 * Function<T,R> 函数型接口		R apply(T t);
	 * 
	 * Predicate<T>	断言型接口	boolean test(T t);
	 */
	@Test
	public void consumer() {
		Consumer<String> consumer=(s)->System.out.println(s);
		consumer.accept("hello,lambda");
		System.out.println("=======================");
		//实例方法引用(2)     对象::实例方法名    (方法与函数式接口中方法的参数类型、参数个数,返回值类型都必须相同,构造器、数组(只能定义数组长度初始化)亦是如此)
		Consumer<String> consumer2=System.out::println;
		consumer2.accept("hello");
	}
	输出:
	hello,lambda
	=======================
	hello


	@Test
	public void supplier() {
		Supplier<String> supplier=()->"字符串";
		String s = supplier.get();
		System.out.println(s);
		System.out.println("=======================");
		//构造器引用    类名::new	
		Supplier<Employee> supplier2=Employee::new;
		Employee employee = supplier2.get();
		System.out.println(employee);
	}
	输出:
	字符串
	=======================
	Employee [name=null, salary=null, age=null, hireDay=null]


	@Test
	public void function() {
		Function<Integer,Integer> function=(x)->{
			int num=x+10;
			return num;
		};
		Integer num = function.apply(20);
		System.out.println(num);
		System.out.println("=======================");
		//数组引用   类名[]::new
		Function<Integer,Employee[]> function2=Employee[]::new;
		Employee[] e = function2.apply(5);
		System.out.println(e.length);
		System.out.println("=======================");
		//静态方法引用  类名::静态方法名
		BinaryOperator<Integer> binaryOperator=Integer::compare;
		//方法中传入参数2,3 进行比较第一个参数大于第二个参数返回1,否则返回-1
		Integer max = binaryOperator.apply(2, 3);
		System.out.println(max);
	}
	输出:
	30
	=======================
	5
	=======================
	-1
	

	@Test
	public void predicate() {
		Predicate<String> predicate =(s)->"张三".equals(s);
		boolean test = predicate.test("李四");
		System.out.println(test);
		System.out.println("=======================");
		//实例方法引用(2)     类名::实例方法名   根据参数类型来分辨
		Predicate<String> predicate2=String::isEmpty;
		//相当于"".isEmpty();
		System.out.println(predicate2.test(""));
	}
	输出:
	false
	=======================
	true

	


分享到:
评论

相关推荐

    java8新特性Lambda表达式

    想要快速了解并掌握Lambda表达式的可以学习

    Java8 新特性Lambda表达式实例详解

    Java8 新特性Lambda表达式实例详解 Java8 中引入了Lambda表达式,这是一种函数式编程的方式,它可以使代码变得更加简洁和高效。Lambda表达式可以作为函数式接口的实例,它可以捕获外部变量,实现高效的回调机制。 ...

    浅析Java8新特性Lambda表达式和函数式接口

    Java 8 新特性 Lambda 表达式和函数式接口 Java 8 中引入的 Lambda 表达式是一种可以传递的代码,旨在简化代码,提高代码的可读性。 Lambda 表达式基于数学中的λ演算得名,直接对应于其中的 lambda 抽象(lambda ...

    JAVA8新特性Lambda表达式、Stream使用

    需要环境:JDK8 下载下来后 直接导入IDE工具中,运行TestLambda、TestLambda2、TestLambda3、PracticeLambda、TestStream中的main方法就可以看见结果

    Java8新特性Lambda表达式的一些复杂用法总结

    Java 8引入了Lambda表达式,这是一种强大的新特性,它为Java编程语言带来了函数式编程的概念。Lambda表达式允许程序员创建匿名函数,即没有名称的函数,这些函数可以直接作为值传递给方法或存储在变量中。这使得代码...

    java8 lambda表达式学习总结

    Java 8 的 Lambda 表达式是其最显著的新特性之一,它引入了一种更为简洁、函数式的编程风格。Lambda 表达式使得处理匿名函数变得更加简单,尤其在需要定义短小、无状态的代码块时,它们可以极大提高代码的可读性和...

    Java8新特性之Lambda表达式和Optional类

    Java 8 新特性之 Lambda 表达式和 Optional 类 Java 8 是 Java 语言的最新版本之一,它引入了许多新的特性,包括 Lambda 表达式和 Optional 类,这些特性极大地提高了 Java 语言的编程效率和可读性。下面我们将详细...

    java8新特性,Lambda表达式

    下面将详细探讨Lambda表达式以及相关的Java 8新特性。 Lambda表达式的语法简洁明了,它定义了一个没有名称的方法,可以看作是一种函数对象。Lambda的结构通常由三部分组成:参数列表(可选类型声明)、箭头符号(-&gt;...

    Java 8 lambda表达式

    Java 8 的引入,尤其是Lambda表达式,对Java语言产生了深远的影响,它为Java开发者带来了更简洁、更灵活的编程方式。Lambda表达式是函数式编程的核心元素,它允许我们将函数作为方法参数传递,或者将代码块当作数据...

    java 1.8新特性 lambda表达式.docx

    ### Java 1.8 新特性:Lambda 表达式与 Stream 流操作 #### Lambda 表达式介绍 Lambda 表达式是 Java 1.8 中引入的一个重要特性,它使得 Java 开发者能够在代码中更加简洁地表示匿名方法。这种表达式尤其适用于...

    java8lambda表达式Demo

    Java 8 是一个重要的Java平台版本,因为它引入了许多新特性,其中最显著的就是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许我们以更简洁、更易读的方式编写代码,特别是在处理集合和并发任务时。在这...

    Java高级特性之Lambda表达式:功能介绍、实战应用与常见问题解决

    适合人群:已经熟悉Java基础,希望深入学习和理解Java 8新特性的开发者。 使用场景及目标:适用于需要简化代码、提高代码可读性和可维护性的开发场景,帮助开发者掌握Lambda表达式的基本语法和高级技巧,使其能够在...

    Java8集合 CompletableFuture lambda表达式 新的TimeAPI 和ForkJoin Demo包

    在这个"Java8集合 CompletableFuture lambda表达式 新的TimeAPI 和ForkJoin Demo包"中,我们可以深入探讨以下几个关键知识点: 1. **Lambda表达式**: Lambda表达式是Java 8的一大亮点,它简化了对匿名函数的处理...

    Java系列JDK 1.8 新特性之 Lambda表达式.pdf

    Lambda表达式是Java 8中引入的一个重要新特性,它允许开发者以一种更加简洁的方式编写函数式接口实现代码。Lambda表达式本质上是一个匿名函数,能够作为一个参数传递给方法调用或存储在变量中,这使得Java支持了更高...

    Java8新特性lambda表达式有什么用(用法实例)

    Java 8 的一个重要特性是引入了 Lambda 表达式,这一改变显著地提升了代码的简洁性和可读性,尤其是在处理集合操作时。Lambda 表达式使得 Java 更加接近函数式编程,允许开发者以一种更简洁的方式定义匿名函数。本文...

    java lambda 表达式(语言篇和类库篇)

    Java 8的`java.time`包引入了新的日期和时间API,其中很多操作也支持Lambda表达式,如`LocalDateTime.now().filter(date -&gt; date.getDayOfWeek() == DayOfWeek.SATURDAY)`。 5. **CompletableFuture**: `...

    java8接口新特性(函数式接口,lambda表达式)(csdn)————程序.pdf

    总结起来,Java 8 中的接口新特性使得接口更加灵活,能够提供默认和静态方法,同时 Lambda 表达式极大地提升了函数式编程的体验。这些改变使得 Java 更加适应现代编程需求,尤其是对于并发和大数据处理等场景,使得...

    Java lambda表达式和JVM字节码功能详解.pdf

    Java Lambda表达式是Java 8引入的一个重要特性,它极大地简化了函数式编程风格的实现。Lambda表达式允许我们将函数作为一个值传递,就像传递其他数据类型一样。这在处理集合、事件驱动编程以及多线程等场景下尤其...

    【Java8】Lambda表达式 和 Stream API 详解笔记.zip

    【Java8】Lambda表达式 和 Stream API 是Java编程语言中的两个重要创新,它们极大地提升了代码的简洁性和可读性,特别是在处理集合数据时。这里我们将深入探讨这两个特性,并结合实际示例来理解它们的工作原理。 ...

Global site tag (gtag.js) - Google Analytics