lamada之类库

四、类库
4.1 在项目中使用lamada表达式
4.2 基本数据类型
在java8中,对进本数据类型进行了优化。因为拆箱、装箱要比其对相应的基本数据类型占用磁盘空间更多。并且拆箱、装箱本身是很消耗性能的。
static void printArtils(List artists) {
IntSummaryStatistics intSummaryStatistics = artists.stream()
.mapToInt(artist -> artist.getAge())
.summaryStatistics();
System.out.println(“max : ” + intSummaryStatistics.getMax() + “——– min” + intSummaryStatistics.getMin());
}
4.3 重载解析
lamada表达式的类型推推导:
1.如果有一个符合,则就是这一个
2.如果有两个符合,则找最具体的
3.如果有多个并且不明确的,则需要显示的指定

    例子: 
            private interface IntBinaryOpertar extends BinaryOperator<Integer> { //一旦此继承关系不存在,则编译器会回编译错误

            }

            public void overLoadMethod(IntBinaryOpertar intBinaryOpertar) {
                System.out.println("intBinara");
            }
            public void overLoadMethod(BinaryOperator<Integer> intBinaryOpertar) {
                System.out.println("parenBinar");
            }

4.4 @functionalInterface
这是一个接口函数的注解,凡是带有从注解的,必须是接口函数。像Closeable、Comparator只是具有函数接口的形式,而不能作为函数接口。
4.5 二进制接口的兼容性
二进制兼容性,一直是java的优势所在。这种向后兼容性。从java1到java7都是做到尽力兼容的。
例子: 在java8 ,在Collections中引入了Stream() 方法,但是java7怎么办呢?来解决编译的问题。

默认方法和子类
有一个优先级 类方法--> 父类的方法 --> 接口默认方法。

4.6 多重继承 (接口函数)
如果一个接口继承了两个具有相同默认方法的接口,则执行默认接口的时候,要指明父类的类型。
public interface A {
default void ab(){
System.out.println(“ab”)
};
}

public interface B {
    default void ab(){
        System.out.println("ab")
    };
}

public interface AB extends A,B{

    //如果再实现类中,则需要指明他的父类是A,还是B?
}

4.8 权衡
多继承利弊的权衡
4.9 接口的静态方法
Stream.of //没有什么是不变的
4.10 Optional
(略)

猜你喜欢

转载自blog.csdn.net/dirksmaller/article/details/77750479