栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 内建函数式接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 内建函数式接口

Java 内建函数式接口
  • 1、内建函数式接口
    • (1)功能型接口(Function)
    • (2)消费型接口(Consumer)
    • (3)供给型接口(Supplier)
    • (4)断言型接口(Predicat)
  • 2、范例
    • (1) 功能型接口
    • (2)消费型接口
    • (3)供给型接口
    • (4)断言型接口

1、内建函数式接口

在方法引用的操作过程中,可以发现,不管如何进行操作,对于可能出现的函数式接口的方法也最多只有4类:有参数有返回值、有参数无返回值、无参数有返回值、判断真假。为了简化开发者的定义以及实现操作的统一,从JDK1.8开内建函数始提供了一个新的开发包:java. util. function,并且在这个包中提供了以下4个核心的函数式接口:

(1)功能型接口(Function)
@FunctionalInterface
public interface Function(
	public R apply(T t);
}

主要作用:此接口需要接收一个参数,并且返回一个处理结果。

(2)消费型接口(Consumer)
@FunctionalInterface
public interface Consumer {
	public void accept(T t);
}

主要作用:此接口只是负责接收数据(引用数据时不需要返回),并且不返回处理结果。

(3)供给型接口(Supplier)
@FunctionalInterface
public interface Supplier {
	public T get();
}

-主要作用:此接口不接收参数,但是可以返回结果。

(4)断言型接口(Predicat)
@FunctionalInterface
public interface Predicate {
	public boolean test(T t);

主要作用:进行判断操作使用。

提示: java util. function包中存在大量类似功能的其他接口。以上四种是核心接口。

2、范例 (1) 功能型接口

使用功能型函数式接口接收参数并且返回一个处理结果。本操作将利用Function接引用,String类public boolean startsWith( String str)方法。

import java.util.function.Function;
public class TestDemo {
	public static void main(String[] args) {
		Function fun = "##workhah"::startsWith;
		System.out.println(fun.apply("##"); // 相当于利用对象调用 startsWith()
	}
}
//程序执行结果:true

如果要使用功能型接口,就必须保证有一个输入参数并且有返回值,由于映射的是String类的startsWith0方法,所以使用此方法时必须传入参数(String型),同时要返回一个判断结果( boolean型)。

(2)消费型接口

消费型接口主要是接收参数但是不返回数据,所以本次映射 System.out.print(String str)方法。

import java.util.function.Consumer;
public class TestDemo {
	public static void main(String[] args) {
		Consumer cons = System.out::print;
		cons.accept("hello world");
	}
}
//程序执行结果:hello world

本程序利用消费性接口接收了 System.out.print()方法的引用,此方法定义中需要接收一个String型数据,但是不会返回任何结果。

(3)供给型接口

供给型接口是不接收任何参数的,所以本次引用 String类的toUpperCase()方法。

import java.util.function.Supplier;
public class TestDemo {
	public static void main(String[] args) {
		Supplier sup = "workhah"::toUpperCase;
		System.out.println(sup.get());
	}
}
//程序执行结果:WORKHAH

本程序使用供给型函数式接口。此接口上不需要接收参数,所以直接利用 String类的实例化对象引用了toUpperCase()方法,当调用``get()```方法后可以实现大写转换操作。

(4)断言型接口

断言型接口主要是进行判断操作,本身需要接收一个参数,同时会返回个判断结果(boolean型)。本次将引用 String类中的equalsIgnoreCase()方法。

import java.util.function.Predicate;
public class TestDemo {
	public static void main(String[] args) {
		Predicate pre = "workhah":: equalsIgnoreCase;
		System.out.println(pre.test("WORKHAH"));
	}
}
//程序执行结果:true

本程序直接将 String类的 equalsIgnoreCase()普通方法利用断言型接口进行引用,然后进行忽略大小写比较。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530695.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号