2013-11-04 254 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(); 
}