2013-11-04 264 views
0

我知道如何添加一個對象:如何更改對象的ArrayList中的字段的值?

ArrayList<Object> ob = new ArrayList<Object>(); 

ob.add (index, some_object); 

但讓說,對象有一個名爲「名稱」字段,我怎麼只能更改單場?
例如:

ob.setName(name); 

(我知道這是行不通的。)

+1

不知道如果一個ArrayList是你的情況最好的選擇。爲什麼要更新arrayList中的項目的屬性?你能描述一下你想達到的目標嗎? –

+1

無關。爲變量賦予有意義的名稱。命名一個「ob」列表是誤導性的。通常的做法是像'objects'(即**複數形式**)或類似的東西... – informatik01

+0

ob.get(index).setName(「nameToBeSet」); – MaheshVarma

回答

1

這裏沒有特殊的待遇:

ArrayList<SomeObjectType> ob = new ArrayList<SomeObjectType>(); 
//... 
ob.add(index, some_object); 
some_object.setName(name); 

你想爲設置名稱的對象是some_object,不ob

+1

另外,我敢肯定他不應該使用ArrayList 如果你想使用它的領域。至少投之前。 – utdemir

+0

@ utdemir你是對的。 – Elazar

1

如果你問,你有一個List其中包含要更新對象的情況,但還沒有到該對象的引用,那麼你需要先找到對象該列表,然後更新其name字段。

如果您確實有對該對象的引用,那麼它包含在列表中的事實是無關緊要的:調用some_object.setName(name)並且對象將具有新名稱,無論它是從列表中提取還是直接提取。

0

您似乎混淆了存儲對象的列表和對象本身。嘗試是這樣的:

Object temp = ob.get(index); 
    temp.name = new_name; 
1

我覺得也許你想看到

public void stuff(List<? extends Foo> list, int indexToAlter){ 
    // Get the item in the list at the index and call the appropriate method 
    list.get(indexToAlter).methodOnFoo(); 
}