Java9新特性

Java9发布于2017年9月发布,带来了很多新特性,其中最主要的变化是模块化系统。

模块就是代码和数据的封装体,模块的代码被组织成多个包,每个包中包含Java类和接口,模块的数据则包括资源文件和其他静态信息。

模块化的使用

语法格式

  • 在 module-info.java 文件中,用新的关键词module来声明一个模块,具体如下:
    • module 模块名称 { }

模块化的优势

  • 减少内存的开销
  • 可简化各种类库和大型应用的开发和维护
  • 安全性,可维护性,提高性能

钻石操作符的使用升级

  • 在Java9中允许在匿名内部类的使用中使用钻石操作符

  • import java.util.Comparator;
    
    public class DiamondTest {
           
    
        public static void main(String[] args) {
           
    
            // 实现匿名内部类和钻石操作符的搭配使用
            // new 后面<>中的Integer可省略
            //Comparator comparator = new Comparator() {
           
            Comparator<Integer> comparator = new Comparator<>() {
           
                @Override
                public int compare(Integer o1, Integer o2) {
           
                    return 0;
                }
            };
        }
    }
    

集合工厂方法

基本概念

  • Java9的List、Set和Map集合中增加了静态工厂方法of实现不可变实例的创建

  • 不可变体现在无法添加、修改和删除它们的元素

  • 不允许添加null元素对象

  • import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    public class CollectionTest {
           
    
        public static void main(String[] args) {
           
    
            // 创建List类型的不可变实例
            List<Integer> list = List.of(1, 2, 3, 4, 5);
            //list.add(6); // 编译ok,运行发生UnsupportedOperationException不支持此操作的异常
            System.out.println(list); // [1, 2, 3, 4, 5]
    
            Set<Integer> set = Set.of(6, 7, 8);
            //set.add(null);// 编译ok,运行发生UnsupportedOperationException不支持此操作的异常
    
            Map<Integer, String> map = Map.of(1, "one", 2, "two");
            //map.put(3, "three");// 编译ok,运行发生UnsupportedOperationException不支持此操作的异常
        }
    }
    

实际意义

  • 保证线程安全:在并发程序中既保证线程安全性,也大大增强了并发时的效率
  • 被不可信的类库使用时会很安全
  • 如果一个对象不需要支持修改操作,将会节省空间和时间的开销
  • 可以当作一个常量来对待,并且这个对象在以后也不会被改变

InputStream的增强

  • InputStream类中提供了transferTo方法实现将数据直接传输到OutputStream中
  • Java9新特性_第1张图片

你可能感兴趣的:(JavaSE,java,编程语言)