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<Integer> comparator = new Comparator<Integer>() {
            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中
  • 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值