Java 9 入门--模块化

模块化  

模块化是java 9最大的一个特性,它使得代码组织上更安全,因为它可以指定哪些部分可以暴露,哪些部分隐藏。

本质上讲,模块的概念,其实就是package外再裹一层,也就是说,用模块来管理各个package,通过声明某个package暴露,不声明默认就是隐藏。

本文将通过Java10  IDEA的方式   初体验模块化。

1.建立项目All  在项目的基础上 新建模块One  two。【新建的All项目  删除src dir ,新建模块即可】

Java 9 入门--模块化_第1张图片

2.在One two两个模块下,分别新建module-info.java。里面指定暴露的哪些package

Java 9 入门--模块化_第2张图片

3.模块One two 的module-info.java  里面的内容

Java 9 入门--模块化_第3张图片

4.至此在配置下每个module的Artifacts等即可


_______代码新特性如下

关于List Map.of  takewhile dropwhile和filter的区别

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * create by mengxp on 2018/4/9
 * version=1.0
 * 增强型的API var 关键字以及更加简易的API去创建不可以变的集合(只读)
 */
public class CollectAndStreamUp {


    public static void main(String[] args) {

        var x = List.of("x", "y", "z");
        Set integers = Set.of(6,1, 2, 4,8);
        Map ofmap = Map.of("name", "Jone", "age", "27", "salary", "10000");

        Map ofEntries = Map.ofEntries(Map.entry("name", "Jone"), Map.entry("age", "27"), Map.entry("salary", "10000"));

        ofmap.forEach(
                (a,b)->{
                    System.out.println("a = " + a+"****"+"b = "+b);
                }
        );
        //Filter和【takewhile 和drop while】的区别
         //Filter 是对集合内的元素 全部进行Predicate的判断。
        //takeWhile 一般针对List才采用takewhile 在有序的
        //Stream 中,takeWhile 返回从开头开始的尽量多的元素。set也可以,但是结果不好肉眼检查
        // takeWhile 如果第一个元素满足条件  会收集直到下一个不满足条件的元素。然后返回数据。
        //如果第一个条件不满足,那么就直接返回空的stream
        //drop while 于takewhile相反
        x.stream().takeWhile(e->e.equalsIgnoreCase("x")).forEach(System.out::println);
        final List order = List.of(6, 1, 2, 4, 8);
        order.stream().takeWhile(e->e<6).forEach(System.out::println);
        //iterator() 重载 支持predicate 可用不用使用limit限制  TODO i -> i+1 这里不能写成i++ 不然内存溢出了
        final List iterateColl = Stream.iterate(1, i -> i < 10, i -> i+1).collect(Collectors.toList());
        //Optional  类中 stream() 的使用
        Optional.ofNullable(x).stream().flatMap(y->y.stream()).forEach(System.out::println);
    }
}
关于iterator的改进
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * create by mengxp on 2018/4/9
 * version=1.0
 * 针对在try中关闭资源 比java8的好处时,在java8中资源的初始化必须在try中执行。
 */
public class TryClose {
    public static void main(String[] args) {

        //java 8中的资源关闭
        try (InputStreamReader reader=new InputStreamReader(System.in)){

        }catch (Exception e){

        }
        //java 9 中关闭资源
        InputStreamReader reader=new InputStreamReader(System.in);
        OutputStreamWriter writer=new OutputStreamWriter(System.out);
        try (reader;writer){

        }catch (Exception e){

        }
    }
}


你可能感兴趣的:(java9,java9,模块化)