JDK1.8新特性之方法函数式接口+默认方法

本文介绍了JDK1.8中的新特性,特别是函数式接口的概念,如Function、Consumer、Predicate和Supplier等。这些接口在配合lambda表达式和方法引用使用时能增强代码的简洁性和可读性。此外,还讲解了默认方法的引入,允许在接口中添加带方法体的default方法,目的是为所有实现该接口的类提供统一的功能,同时可以添加静态方法。通过实例展示了如何利用这些新特性进行编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Function interface 接口就是一个有且只有一个抽象方法
但是可以有非抽象方法 的接口
1.可以用lambda表达式
2.也可以用方法的引用

其实在jdk8之前已经有部分的函数式接口
如:
Java.lang.Runnable
Java.util.Comparator
Java.IO.FileFilter

在jdk8以后,新添加的一个函数式接口
Java.util.Function,其中包含了很多的类
如:
Consumer
Predicate
Supplier
等…

例:

@FunctionalInterface
public interface GreetingService {
	public void sayMessage(String message);
}

测试:

public class Demo1 {
	public static void main(String[] args) {
		GreetingService service1 = (message)->System.out.println("hello"+message);
		service1.sayMessage("zhangsan");
		GreetingService service2 =System.out::print;
		service2.sayMessage("lisi");
		
	}
}

默认方法:

  • 在接口中可以放置有方法体的方法,但方法体前用default来修饰

  • 在接口中添加默认方法是用来给所有的子类提供同一个功能

  • 在接口中可以放置静态方法,可以给方法体

例:

public class Demo1 {

	public static void main(String[] args) {
		Vehicle v = new Car();
		v.print();
	}

}
interface Vehicle{
	default void  print(){
		System.out.println("这是一辆车");
	}
	 static  void laba(){
		System.out.println("laba想了");
	}
}
interface FourWheeler{
	default void print(){
		System.out.println("是是一辆四轮车");
	}
}
class Car implements Vehicle,FourWheeler{
	@Override
	public void print() {
		
		Vehicle.super.print();
		FourWheeler.super.print();
		Vehicle.laba();
		System.out.println("我是一辆四轮小轿车");
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值