直接貼代碼(需要借助 Guava 類庫):String[] array = {"a", "b", "c"};for(Integer i : Lists.newArrayList(1, 2, 3)){ Stream.of(array).map(item -> //Strings.padEnd 方法將 item 使用給定的 char 將字符串補全到長度 i Strings.padEnd(item, i, '@')).forEach(System.out::println);}String[] array = {"a", "b", "c"};for(int i = 1; i < 4; i++){ Stream.of(array).map(item -> //這里編譯報錯 Strings.padEnd(item, i, '@')).forEach(System.out::println);}查了一下,覺得可能是因為變量 i 被 lambda 表達式引用,所以編譯器會隱式的將其當做 final 來處理。但是為什么第一個不會報錯,而第二個會報錯呢?
添加回答
舉報
0/150
提交
取消
