我有一個方法返回一個列表。 (getListMethod)鑄造參考vs使用新(ArrayList)
是否有功能差異?
ArrayList myList = (ArrayList) getListMethod();
和
ArrayList myList = new ArrayList(getListMethod());
我有一個方法返回一個列表。 (getListMethod)鑄造參考vs使用新(ArrayList)
是否有功能差異?
ArrayList myList = (ArrayList) getListMethod();
和
ArrayList myList = new ArrayList(getListMethod());
是的,是有區別的。
ArrayList myList = (ArrayList) getListMethod();
創建一個新的參照同ArrayList
,而
ArrayList myList = new ArrayList(getListMethod());
複製舊列表到一個新的元素。
我在這裏假設您知道getListMethod()
確實會返回ArrayList
,否則您可能會遇到第一個變體的其他問題。
是的,我知道,但我覺得這是一件壞事。我在猜測,如果getListMethod的內部實現發生更改並且用戶使用不同類型的List,那麼最好採取我不知道的行動? – user2484014
@ user2484014:是的,確切地說。除非你真的需要'ArrrayList',否則一個好的方法是使用'List myList = getListMethod()'。 – Keppil
非常感謝。只要Stackoverflow允許我將其標記爲答案。是的,我認爲這是必需的。我將這個列表作爲ParceableArrayList放入一個Bundle(Android)中。 – user2484014
當然有。一個是創建一個新對象,另一個是分配對現有對象的引用。如果對象不是'ArrayList'類型,這可能會失敗。 –
另一個很大的區別是第二個不會編譯。 (除非碰巧有一個名爲'getListMethod'的變量......)你錯過了一個'()'。 – ajb
ajb很好抓,固定。 – user2484014