1 回答

TA貢獻1854條經驗 獲得超8個贊
贊成的論據var
:
var
需要更少的打字。它比 let's say 更短,有時更容易閱讀Map<Integer, ArrayList<String>>
。var
如果方法調用的返回類型發生變化,則需要較少的代碼更改。您只需要更改方法調用,而不是每個使用它的地方。var
鼓勵為變量起一個更具描述性的名稱。var customer = new Customer();
即而不是var c = new Customer();
。當您在不同類型的另一個變量下有多個變量時,如果名稱全部為
var
,則所有名稱都會排成一行,而類型本身則不是這種情況(除非類型巧合地具有相同的長度)。
反對意見var
:
var
掩蓋了實際的變量類型。如果初始化器沒有返回明確定義的類型,您可能無法分辨變量的類型。使用
var
是懶惰的。雖然var
肯定比 更容易輸入Map<Integer, ArrayList<String>>
,但如果變量名稱命名不當,您必須進行更深入的搜索才能知道它指的是什么。var
使得更難知道底層變量的類型實際上是什么。您不能
var
在所有情況下都使用。喜歡:var i = 1, j = 2;
var
-一次只接受一個變量。var arr = {1, 2, 3};
- 必須顯式聲明數組。var f = a -> a + " ";
- 它無法確定此 lambda 函數的類型。var f = String::replace;
- 不能使用方法引用,因為它們本身沒有類型。
哦,還有另一個很大的優勢:代碼高爾夫var
更短(創建一個程序/函數來完成特定任務/挑戰,盡可能少的字節)。:) 這可能是我不介意添加它的主要原因,因為我經常使用 Java(以及 .NET C#、05AB1E 和 Whitespace)編寫代碼。
相關:Java 7 的菱形運算符。List<String> names = new ArrayList<>();
對比List<String> names = new ArrayList<String>();
_
就個人而言,我仍然使用寫出的類型而不是var
,除了打代碼。但也許我只需要在更頻繁地使用它之前再習慣它一點。為了可讀性,并且無需挖掘就可以更清楚,更容易地看到類型,我var
根本不使用。至于 Java 7 的菱形運算符,我只在字段后直接實例化時使用它,但在其他地方實例化時不會使用它(即我會使用 ,但不會使用List<String> names = new ArrayList<>();
)List<String> names; /* ... some code here ...*/ names = new ArrayList<>();
。
不過,總的來說,這一切都歸結為偏好。
添加回答
舉報