java8学习
1、Function函数
public static void main(String[] args) {
      TestController t = new TestController();
      new TestController().aaa(3,value -> t.bbb(value));
}
public int bbb(int b){
        return b+100;
}
public void aaa(int a,Function<Integer,Integer> f){
      Object apply = f.apply(a);
      System.out.println("ggg:"+apply);
}
2、函数式接口@FunctionalInterface
所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。
特点
- 接口有且仅有一个抽象方法
- 允许定义静态方法
- 允许定义默认方法
- 允许java.lang.Object中的public方法
- 该注解不是必须的,如果一个接口符合"函数式接口"定义,那么加不加该注解都没有影响。加上该注解能够更好地让编译器进行检查。如果编写的不是函数式接口,但是加上了@FunctionInterface,那么编译器会报错
// 正确的函数式接口
@FunctionalInterface
public interface TestInterface { // 抽象方法
public void sub(); // java.lang.Object中的public方法
public boolean equals(Object var1); // 默认方法
public default void defaultMethod(){ } // 静态方法
public static void staticMethod(){ }
}
测试
class Test{
    public static void main(String[] args) {
        TwoPinPlug twoPinPlug = new TwoPinPlug();
        //lamda定义匿名对象,需要在别的方法调用它,并把参数传给它。
        //在TwoPinPlug.getTowPinSocket方法调用lamda匿名对象方法,并传给它参数
        twoPinPlug.getTowPinSocket(a -> {
            //业务处理
            System.out.println("我是2脚插头...");
            return "2脚插头";
        });
    }
}
/**
 * 插座接口
 */
@FunctionalInterface
interface  Socket{
    String getPin(String pin);
}
/**
 * 2脚插头
 */
class TwoPinPlug {
    /**
     *  2脚插头获取对应的2脚插座
     * @param socket
     * @return
     */
    public String getTowPinSocket(Socket socket){
        String pin = socket.getPin("2");
        System.out.println("获取2脚插头...");
        return pin;
    }
}
3、lamda表达式要传多小个参数?
class Test{
    public static void main(String[] args) {
        //因为函数接口抽象方法有2个参数,所以这里要定义2参数。匿名类
        doTest((p1,p2)->{
            System.out.println("业务逻辑");
            return "";
        });
    }
    public static void doTest(TestFunctionalInterface testFunctionalInterface){
        testFunctionalInterface.testMethod("aaa","bbb");
    }
}
/**
 * 函数接口
 */
@FunctionalInterface
interface  TestFunctionalInterface{
    String testMethod(String p1,String p2);
}
java8学习的更多相关文章
- Java8学习笔记----Lambda表达式 (转)
		Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ... 
- Java8学习(3)- Lambda 表达式
		猪脚:以下内容参考<Java 8 in Action> 本次学习内容: Lambda 基本模式 环绕执行模式 函数式接口,类型推断 方法引用 Lambda 复合 上一篇Java8学习(2) ... 
- Java8学习笔记目录
		Java8学习笔记(一)--Lambda表达式 Java8学习笔记(二)--三个预定义函数接口 Java8学习笔记(三)--方法引入 Java8学习笔记(四)--接口增强 Java8学习笔记(五)-- ... 
- Java8学习笔记(八)--方法引入的补充
		在Java8学习笔记(三)--方法引入中,简要总结了方法引入时的使用规则,但不够完善.这里补充下几种情况: 从形参到实例方法的实参 示例 public class Example { static L ... 
- JAVA8学习——深入浅出Lambda表达式(学习过程)
		JAVA8学习--深入浅出Lambda表达式(学习过程) lambda表达式: 我们为什么要用lambda表达式 在JAVA中,我们无法将函数作为参数传递给一个方法,也无法声明返回一个函数的方法. 在 ... 
- JAVA8学习——新的时间日期API&Java8总结
		JAVA8-时间日期API java8之前用过的时间日期类. Date Calendar SimpleDateFormat 有很多致命的问题. 1.没有时区概念 2.计算麻烦,实现困难 3.类是可变的 ... 
- java8 学习系列--NIO学习笔记
		近期有点时间,决定学习下java8相关的内容: 当然了不止java8中新增的功能点,整个JDK都需要自己研究的,不过这是个漫长的过程吧,以自己的惰性来看: 不过开发中不是有时候讲究模块化开发么,那么我 ... 
- Java8学习笔记(十一)--并发与非并发流下reduce比较
		BinaryOperator<Integer> operator = (l, r) -> l + r; BiFunction<Integer, Integer, Integer ... 
- java8学习的一点总结
		最近研究了一下java8 弄了几个例子学习了一下用法: 创建了一个实体类: @Data public class Apple { private Integer id; private String ... 
- Java8学习笔记(七)--Collectors
		本系列文章翻译自@shekhargulati的java8-the-missing-tutorial 你已经学习了Stream API能够让你以声明式的方式帮助你处理集合.我们看到collect是一个将 ... 
随机推荐
- MySQL倒序索引测试1
			测试环境 MySQL Community Server 准备测试数据 DROP TABLE TB001; CREATE TABLE TB001(ID INT PRIMARY KEY AUTO_INCR ... 
- 标准库中的装饰器 lru_cache和全新的 singledispatch
			Python 内置了三个用于装饰方法的函数:property.classmethod 和 staticmethod. 另一个常见的装饰器是 functools.wraps,它的作用是协助构建行为 良好 ... 
- SSH爆破应急响应
			问题发现 登录云主机,根据提示消息,发现正遭受SSH爆破攻击,IP地址为159.65.230.189 查看登录相关安全日志:tail -f /var/log/secure,发现其他尝试爆破IP106. ... 
- JQuery系列(8) - JQuery插件开发
			所谓“插件”,就是用户自己新增的jQuery实例对象的方法.由于该方法要被所有实例共享,所以只能定义在jQuery构造函数的原型对象(prototype)之上.对于用户来说,把一些常用的操作封装成插件 ... 
- refPoint 别名与指针
			// refPoint.cpp : Defines the entry point for the console application. // #include "stdafx.h&qu ... 
- flayboard(纯属娱乐,别人做的)
			<iframe id="iframe" src="" frameborder="0" width="100%" h ... 
- UI系统的作用
			1.向用户展示信息: 2.将用于与系统的交互解释为指令. 
- gettid和pthread_self区别
			http://blog.csdn.net/rsyp2008/article/details/45150621 1 线程ID获取方法 Linux下获取线程有两种方法: 1)gettid或者类似getti ... 
- [nodemon] app crashed - waiting for file changes before starting...
			慕课网前端工程师晋升课程 Vue全家桶+SSR+Koa2全栈开发美团网 视频里用 npx create-nuxt-app mt-app创建项目后,不能使用import ...from....跟着老师修 ... 
- SQL注入学习
			本次实验环境用的是Xampp,搭建的sqli-labs 配置环境: 下载路径https://github.com/Audi-1/sqli-labs,下载源代码,将解压好的文件夹放在xampp\htdo ... 
