Java 10:“ var”关键字
生活随笔
收集整理的這篇文章主要介紹了
Java 10:“ var”关键字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java 10使用關鍵字var引入了局部變量類型推斷 。 這意味著無需編寫:
Map<Department, List<Employee>> map = new HashMap<>(); // ... for (Entry<Department, List<Employee>> dept : map.entrySet()) {List<Employee> employees = dept.getValue();// ... }您可以使用var減少樣板,如下所示:
var map = new HashMap<Department, Employee>(); // ... for (var dept : map.entrySet()) {var employees = dept.getValue();// ... }var消除了在代碼中編寫顯式類型的需要。 這不僅減少了重復,而且還使您的代碼更易于維護,因為例如,如果您決定將來更改存儲在地圖中的對象的類型,則只需要更改一行代碼即可。
多態性:
現在讓我們看一下var在多態代碼中的行為。 例如,如果您有一個Shape類,其中包含兩個子類Square和Circle ,則使用var v = new Circle()會推斷出什么類型? 讓我們在JShell中嘗試一下:
jshell> var v = new Circle(); v ==> Circle@4e9ba398jshell> v.getClass(); $13 ==> class Circlejshell> v = new Square(); | Error: | incompatible types: Square cannot be converted to Circle | v = new Square(); | ^----------^如上所示, v屬于Circle類型,如果您嘗試將其重新分配給Square ,則編譯器將引發錯誤。
匿名類:
使用var可以做的令人興奮的事情之一就是創建匿名類并引用其中的字段! 例如:
var person = new Object() {String name = "Joe";int age = 10; }; System.out.println(person.name + ":" + person.age);var推斷出匿名類的類型,這意味著您可以將匿名類用作中間值的“持有人”,而無需創建和維護新類。 這是另一個示例,顯示了如何創建“臨時”人物對象:
var persons = Stream.of("Alice", "Bob", "Charles").map(s -> new Object() {String name = s;int age = 10;}).collect(toList()); persons.forEach(p -> System.out.println(p.name));其他注意事項:
如果沒有顯式初始化(??分配為null )或在lambda表達式中,則無法使用var :
jshell> var v; | Error: | cannot infer type for local variable v | (cannot use 'var' on variable without initializer) | var v; | ^----^jshell> var v = null; | Error: | cannot infer type for local variable v | (variable initializer is 'null') | var v = null; | ^-----------^jshell> var v = () -> {} | Error: | cannot infer type for local variable v | (lambda expression needs an explicit target-type) | var v = () -> {}; | ^---------------^翻譯自: https://www.javacodegeeks.com/2018/05/java-10-the-var-keyword.html
總結
以上是生活随笔為你收集整理的Java 10:“ var”关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 被ddos了(ddos后的cpu)
- 下一篇: 抗ddos能防恶意代码吗怎么解决(抗dd