天天看點

Java10 新特性

Java10 新特性

var關鍵字

局部變量的類型推斷 var關鍵字:這個新功能将為Java增加一些文法糖 - 簡化它并改善開發者體驗。新的文法将減少與編寫Java相關的冗長度,同時保持對靜态類型安全性的承諾。

使用場景
  • 局部變量初始化
  • for循環内部索引變量
  • 傳統的for循環聲明變量
使用限制
  • 方法參數
  • 全局變量
  • 構造函數參數
  • 方法傳回類型
  • 字段
  • 捕獲表達式(或任何其他類型的變量聲明)
/**
     * 輸出:
     * [hello,world!, 1, 1.01]
     */
    public static void varKeyWord() {
        // 這裡最好帶上泛型,否則list就什麼都可以裝了
        var list = new ArrayList<>();
        list.add("hello,world!");
        list.add(1);
        list.add(1.01);
        System.out.println(list);
    }
           

新增ByteArrayOutputStream

String toString(Charset): 重載 toString(),通過使用指定的字元集解碼位元組,将緩沖區的内容轉換為字元串。

List、Map、Set新增API

/**
     * 按照其疊代順序傳回一個不可修改的清單、映射或包含給定集合的元素的集合。
     */
    public static void collectionNewAPI() {
        var list = new ArrayList<String>();
        list.add("hello");
        list.add("world");

        // copyOf傳回的集合為不可變,不能增删元素
        var newCopyList = List.copyOf(list);
        // 這裡add方法會抛出異常:java.lang.UnsupportedOperationException
        // newCopyList.add("zdk");
        System.out.println(newCopyList);
    }
           

Properties新增API

/**
     * 新增int入參的構造方法和重載的replace方法
     */
    public static void propertiesNewAPI() {
        // 新增int參數的構造函數,初始化大小,預設為8
        var properties = new Properties(8);
        properties.setProperty("host", "localhost");
        
        // 隻有目前值為localhost時才會替換,替換成功傳回true
        properties.replace("host", "localhost", "baidu.com");
        System.out.println(properties);
    }
           

Collectors收集器新增API

  • toUnmodifiableList():
  • toUnmodifiableSet():
  • toUnmodifiableMap(Function, Function):
  • toUnmodifiableMap(Function, Function, BinaryOperator):

    這四個新方法都傳回 Collectors ,将輸入元素聚集到适當的不可修改的集合中。

/**
     * 輸出:
     * [hello, world]
     */
    public static void collectorsNewAPI() {
        var list = new ArrayList<String>();
        list.add("hello");
        list.add("world");

        var unmodifiableList = list.stream().collect(Collectors.toUnmodifiableList());
        // 不可修改的list,這裡add/remove操作不會抛出異常,但add/remove不會生效
        unmodifiableList.add("hello2");
        System.out.println(unmodifiableList);
    }