JDK8接口中默认方法,静态方法和函数接口

package com.bingo.frame;

import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;

/**
 * JDK8修改了编译器允许默认方法和静态方法出现在接口里面
 * @author bingo
 */

//接口中默认方法子类可以不用实现(如果需要扩展也可以重写), 方便接口扩展, 不影响子类使用
interface IA {
	public abstract void test01();
	public default void test02() {
		System.out.println("默认方法只能通过子类对象调用");
	}
	public static void test03() {
		System.out.println("静态方法只能通过接口名称调用");
	}
}

class A implements IA {
	@Override
	public void test01() {}
	
//	也可以实现默认方法
//	@Override
//	public void test02() {
//		IA.super.test02();
//	}
}

//函数接口, 配合Lambda表达式使用
@FunctionalInterface
interface IC {
	void testC();
}

public class BingoTest {
	
	static void lambda (IC ic) {
		ic.testC();
	}
	
	public static void main(String[] args) {
		new A().test02();
		IA.test03();
		
		//a.创建IC接口的匿名实现类
		new IC() {
			@Override
			public void testC() {
				System.out.println("new IC().testC()");
			}
		}.testC();
		
		//b.Lambda表达式
		lambda(()->{ 
			System.out.println("()->{...}");
		});
		 
		//只有一行可以省略大括号{}
		lambda(()->System.out.println("()->{...}"));
		
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDK 8 引入的函数式编程特性主要包括函数接口(Functional Interface)和Lambda 表达式。函数接口是指仅包含一个抽象方法接口,用于表示可以作为函数对象的接口。Lambda 表达式是一种简洁的语法,用于创建函数对象。 底层原理如下: 1. 函数接口函数接口JDK 8 引入的一个新的注解 @FunctionalInterface 标识的接口。该接口只能包含一个抽象方法,但可以包含多个默认方法静态方法。通过函数接口,我们可以将方法作为参数传递、作为返回值返回,以及在 Lambda 表达式使用。 2. Lambda 表达式:Lambda 表达式是一种匿名函数,它可以简洁地表示带有参数和代码块的函数对象。Lambda 表达式的语法由参数列表、箭头符号 "->" 和方法体组成。例如 `(x, y) -> x + y` 表示一个接收两个参数并返回它们之和的 Lambda 表达式。 3. 函数对象:Lambda 表达式实际上是函数对象的一种实现方式。在编译时,Lambda 表达式会被编译成一个函数对象,该对象实现了函数接口的抽象方法。当我们使用 Lambda 表达式时,实际上是创建了一个函数对象,并将其作为方法参数或返回值进行传递。 通过函数接口和Lambda 表达式,我们可以将函数作为一等公民进行处理,实现了函数式编程的特性,如高阶函数函数组合、柯里化等。底层原理是将Lambda 表达式编译成函数对象,从而实现了函数式编程的功能。这样可以提高代码的可读性和简洁性,并且使得并行处理和函数式操作更加方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值