zoukankan      html  css  js  c++  java
  • JavaSE:Java8 新特性

    1.  Java8的概述

        Java8是Java语言的一个重要版本,该版本于2014年3月发布,是自Java5以来最具革命性的版本,

        这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性

    2.  函数式接口

        <1>函数式接口:指,只包含一个抽象方法的接口,如:java.lang.Runnable、java.util.Comparator接口等

        

        

        <2>Java8提供@FunctionalInterface注解,来定义(强调)函数式接口

          若定义的接口不符合函数式规范,便会报错。

        <3>Java8中,增加了java.util.function包,该包包含了常用的函数式接口,具体如下:

    接口名称 方法声明 功能介绍
    Consumer void accept(T t) 根据指定的参数,执行操作
    Supplier T get() 得到一个返回值
    Function<T,R> R apply(T t) 根据指定的参数,执行操作并返回
    Predicate boolean test(T t) 判断指定的参数,是否满足条件

    3.  匿名内部类实现函数式接口

        测试类

     3 import java.util.Comparator;
     4 import java.util.function.Consumer;
     5 import java.util.function.Function;
     6 import java.util.function.Predicate;
     7 import java.util.function.Supplier;
     8 
     9 public class FunctionalInterfaceTest {
    10 
    11     public static void main(String[] args) {
    12 
    13         // 1.匿名内部类的语法格式: 父类/接口类型  引用变量名 = new 父类/接口类型(){ 方法的重写 };
    14         Runnable runnable = new Runnable() {
    15             @Override
    16             public void run() {
    17                 System.out.println("我是既没有参数又没有返回值的方法!");
    18             }
    19         };
    20         runnable.run(); // 我是既没有参数又没有返回值的方法!
    21 
    26 
    27         System.out.println("----------------------------------------------------------------------");
    28         Consumer consumer = new Consumer() {
    29             @Override
    30             public void accept(Object o) {
    31                 System.out.println(o + "有参但没有返回值的方法就是我!");
    32             }
    33         };
    34         consumer.accept("友情提示:"); // 友情提示:有参但没有返回值的方法就是我!
    41 
    42         System.out.println("----------------------------------------------------------------------");
    43         Supplier supplier = new Supplier() {
    44             @Override
    45             public Object get() {
    46                 return "无参有返回值!";
    47             }
    48         };
    49         System.out.println(supplier.get()); // 无参有返回值
    50 
    
    55         System.out.println("----------------------------------------------------------------------");
    56         Function function = new Function() {
    57             @Override
    58             public Object apply(Object o) {
    59                 return o;
    60             }
    61         };
    62         System.out.println(function.apply("有参有返回值的方法")); // 有参有返回值的方法
    63 
    67 
    68         System.out.println("----------------------------------------------------------------------");
    69         Comparator comparator = new Comparator() {
    70             @Override
    71             public int compare(Object o1, Object o2) {
    72                 return 0;
    73             }
    74         };
    75         System.out.println(comparator.compare(10, 20)); // 0  (传两个参数,得到一个返回值的方法)
    76 
    
    80         System.out.println("----------------------------------------------------------------------");
    81         Predicate predicate = new Predicate() {
    82             @Override
    83             public boolean test(Object o) {
    84                 return false;
    85             }
    86         };
    87         System.out.println(predicate.test("hello")); // false (传一个参数,得到 true/false 的方法)
    91     }
    92 }
  • 相关阅读:
    动态设置字体大小需要注意的点
    getDimension与getDimensionPixelOffset与getDimensionPixelSize的区别
    统计图钻取的明细报表在非模态窗口中显示
    局部区块多个报表 TAB 页切换及局部区块的参数查询
    分栏报表制作攻略
    多值关联过滤
    鼠标悬停出现提示信息怎么做
    复杂报表设计之动态报表
    Logo(图片)作为报表水印的解决方法
    分组填报表的制作
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/14945037.html
Copyright © 2011-2022 走看看