Java 我可以从一个对象获取一个列表,向其中添加一个字符串,然后在一行中将其设置回该对象吗?

Java 我可以从一个对象获取一个列表,向其中添加一个字符串,然后在一行中将其设置回该对象吗?,java,list,Java,List,我想知道是否可以从对象中获取列表,向其中添加一个项目,并将列表设置为对象的一行 我通常会这样做: List<String> tempList = someObject.getList(); tempList.add("some string value"); someObject.setList(tempList); 但后来我意识到,方法add()将返回一个布尔值,而方法setList()将获取一个List 有什么想法吗?据我所知,在一行中没有好的方法来做到这一点 如果您需要经常这

我想知道是否可以从对象中获取
列表
,向其中添加一个项目,并将
列表
设置为对象的一行

我通常会这样做:

List<String> tempList = someObject.getList();
tempList.add("some string value");
someObject.setList(tempList);
但后来我意识到,方法
add()
将返回一个布尔值,而方法
setList()
将获取一个
List


有什么想法吗?

据我所知,在一行中没有好的方法来做到这一点

如果您需要经常这样做,您可以修改
someObject
的类,使用
addItem
方法直接执行此操作

或者,如果无法修改该类,则可以编写一个方法,用于添加到列表并返回列表:

static <E> List<E> add(List<E> list, E extra) {
    list.add(extra);
    return list; 
}
静态列表添加(列表,E额外){
列表。添加(额外);
退货清单;
}

假设您没有在
getList
中返回副本,它应该是相同的引用,因此您可以说

someObject.getList().add("some string value");
而且你不需要
setList
返回,因为只有一个
List

仅仅因为你可以在一个语句中做一些事情,并不意味着你应该

但如果您不介意稍微滥用一下流,这当然是可能的:

    Stream.of(someObject.getList())
            .map(list -> new Pair<>(list.add(new Object()), list))
            .forEach(pair -> someObject.setList(pair.getValue()));
Stream.of(someObject.getList())
.map(list->new Pair(list.add(new Object()),list))
.forEach(pair->someObject.setList(pair.getValue());

当然,真正的答案是,如果您想在一行中完成类似的操作,您只需编写一个方法,其中包含尽可能多的行以保持清晰,然后调用它(在一行中)。

请您进一步解释它的工作原理。我不知道我们可以在Java中通过引用操作对象。Java总是按值传递,但对象(引用类型)的值是-a reference.+1表示简单的解决方案。我知道我可以做到这一点,但我想知道我是否可以不创建新方法直接做到这一点。
    Stream.of(someObject.getList())
            .map(list -> new Pair<>(list.add(new Object()), list))
            .forEach(pair -> someObject.setList(pair.getValue()));