2015-08-03 40 views

回答

4

我們知道Arrays.asList返回一個固定長度的List,它由固定長度的array支持。編程時編譯器不知道數組的長度。除非你運行這個程序,否則你不知道運行時的長度。

總之,你不能修改數組在編譯時 :)

+0

調用asList()本身可以建議添加/刪除不允許。所以編譯器可以拋出異常。不是嗎? –

+0

而編譯器也不知道該數組是「固定大小」。這是僅供班級所知的實施細節。 – Codebender

+0

@AbhishekSaxena編譯器不能神奇地猜測(你將添加幾件事)並拋出異常。當你嘗試/做出異常的事情時,它確實會拋出異常。 –

2

這個你從Arrays.asList收到清單的實施是陣列上的一個特殊視圖 - 你不能改變它的大小。

+1

對於給定的代碼5同意的是列表大小。我知道尺寸不能改變。我的問題是爲什麼運行時和不編譯時間異常?我想了解這個 –

+0

OP知道它不被支持。問題是,爲什麼編譯器不知道 –

+1

希望@suresh已經回答了你的問題。 – Shriram

3

從Java文檔

Returns a **fixed-size** list backed by the specified array. (Changes to the returned list "write through" to the array.) This method acts as bridge between array-based and collection-based APIs, in combination with Collection.toArray(). The returned list is serializable and implements RandomAccess. 
This method also provides a convenient way to create a fixed-size list initialized to contain several elements: 

    List<String> stooges = Arrays.asList("Larry", "Moe", "Curly"); 

Parameters: 
a - the array by which the list will be backed 
Returns: 
a list view of the specified array 

由於這是固定的大小,所以你不能修改元素加入到這個名單。

+0

OP知道它不被支持。問題是,'編譯器爲什麼不知道' –