• Java8新特性


    interface ii1{

    public default void de() {System.out.println("默认");}//这里的default关键字不是访问修饰符(隐式public),是接口的特有的关键字,用以表示已被实现的方法,继承类不可写此关键字。
    static void st() {System.out.println("静态");}
    void qq();void ww();
    public static void main(String[] args) {
    st();
    }
    }

    public class Test1 {

    public static void main(String[] args) {

    new ii1(){//通过这种方式创建对象的话,接口里可以有多个抽象方法,但是通过lambda表达式或方法引用的方式就只能有一个抽象方法。
    int ee=3;
    public void ww() {}
    public void qq() {de();ii1.st();}
    };}}

    lambda表达式。

    表达式或者方法引用代表的是函数式接口类型的对象。

    如果方法体只有一行语句,且该方法有返回值,如果方法体里的那一行语句本身就是一个值的形式,可以省略return。

    Collections.sort(names, (String a, String b) -> b.compareTo(a));

    lambda表达式可以有多条语句的,而方法引用则要求方法的实现只有一条语句,且方法引用不包含参数,只包含实现语句,如果该实现语句是一个静态方法调用,则为Integer::value;这种静态类名+方法名的形式,参数只能作为此方法的参数,这也是为什么只允许一条语句并且可以不写参数。引用类型对象也可以方法引用,但是稍微复杂。

    lambda表达式也可以引用外部变量,但是不可以修改外部的局部变量的值,却可以修改静态和实例变量的值。也不能调用default修饰的方法。

    函数式接口。

    要求只有一个抽象方法,但可以有多个default方法。如

    @FunctionInterface

    public interface FI<T,E>{

    T haha(E e);}

  • 相关阅读:
    react 脚手架cra的注意事项,以及脚手架生成目录的分析,以及四个脚本命令
    react组件传值的方式大全
    leetcode——367.有效的完全平方数
    leetcode——69.x的平方根
    leetcode——169.求众数
    leetcode——100.相同的树
    leetcode——172.阶乘后的零
    leetcode——35.搜索插入位置
    leetcode——26.删除排序数组中的重复项
    leetcode——5.最长回文子串
  • 原文地址:https://www.cnblogs.com/riverer/p/deded.html
Copyright © 2020-2023  润新知