0

我知道如何添加一个对象:

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

ob.add (index, some_object);

但是假设对象有一个名为“名称”的字段,我怎样才能只更改那个字段?
例如:

ob.setName(name); 

(我知道这不起作用。)

4

4 回答 4

2

这里没有特殊处理:

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

您要为其设置名称的对象是some_object,而不是ob

于 2013-11-04T19:34:09.733 回答
1

如果您询问的情况是,您有一个List包含要更新的对象,但您还没有对该对象的引用,那么您需要首先在列表中找到该对象,然后更新其name场地。

如果您确实有对该对象的引用,那么它包含在列表中的事实是无关紧要的:some_object.setName(name)无论是从列表中获取还是直接获取,调用和对象都将具有新名称。

于 2013-11-04T19:36:21.297 回答
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();
}
于 2013-11-04T19:42:37.877 回答
0

您似乎混淆了存储对象的列表和对象本身。尝试类似:

    Object temp = ob.get(index);
    temp.name = new_name;
于 2013-11-04T19:40:15.540 回答