如何修改嵌套对象数组中String类型的Status字段值?
问题分析与解决方案
你的问题核心在于String是不可变类型:String.replace()方法不会修改原字符串本身,而是返回一个全新的字符串对象。你现在只调用了replace()却没把返回的新值赋值回对象的fulfillmentStatus字段,所以原对象的状态根本没被更新,这也是IDE提示“Result of 'String.replace()' is ignored”的原因。
修正后的代码
假设你的positionItem对象有对应的setter方法(比如setFulfillmentStatus(String status)),修改后的代码应该是这样:
user.positions().listIterator().forEachRemaining(e -> e.positionItems().listIterator().forEachRemaining(l -> { if ("NEW".equals(l.fulfillmentStatus())) { l.setFulfillmentStatus("PROCESSED"); } }) );
关键说明
- 先通过
"NEW".equals(l.fulfillmentStatus())判断当前状态是否为目标值,避免无意义的字符串操作,同时能防止空指针(如果fulfillmentStatus()可能返回null的话) - 必须调用对象的setter方法把新状态值设置进去,这样才能真正修改嵌套对象里的
Status字段值
内容的提问来源于stack exchange,提问作者Jeet_dev
相关产品推荐
相关产品推荐

