java 11 區域性變數型別推斷
什麼是區域性變數型別推斷?
var javastack = "javastack"; System.out.println(javastack);
大家看出來了,區域性變數型別推斷就是左邊的型別直接使用 var 定義,而不用寫具體的型別,編譯器能根據右邊的表示式自動推斷型別,如上面的 String 。
var javastack = "javastack";
就等於:
String javastack = "javastack";
在宣告隱式型別的lambda表示式的形參時允許使用var
使用var的好處是在使用lambda表示式時給引數加上註解
(@Deprecated var x, @Nullable var y) -> x.process(y);
var 語法 : 區域性變數的型別推斷.
注意點 :
1) var a; 這樣不可以, 因為無法推斷.
2) 類的屬性的資料型別不可以使用var.
有引數的lambda表示式使用
函式式介面 :
Consumer
Consumer<String> consumer = t -> System.out.println(t.toUpperCase()); Consumer<String> consumer = (var t) -> System.out.println(t.toUpperCase());
錯誤的形式: 必須要有型別, 可以加上var
Consumer<String> consumer = (@Deprecated t) -> System.out.println(t.toUpperCase());
正確的形式:
Consumer<String> consumer = (@Deprecated var t) -> System.out.println(t.toUpperCase());