【发布时间】:2021-02-04 12:22:08
【问题描述】:
我正在尝试修改传入的对象并返回它:
private Sample modifyObj(Sample obj) {
obj.setValue1("value1");
obj.setValue2("value2");
return obj;
}
这给了我一个错误,说“方法修改了参数”。 我试图通过在方法中也有一个本地副本来做到这一点:
private Sample modifyObj(Sample obj) {
Sample obj2 = obj;
obj2.setValue1("value1");
obj2.setValue2("value2");
return obj2;
}
但仍然是同样的错误。有没有更好的办法?
【问题讨论】:
-
添加您的实际“示例”类文件的图片。
-
可以粘贴你的全部代码吗?
-
另外,在什么环境下会出现这个错误?一些在线工具,还是本地 IDE?这不是我知道的任何 java 编译器的标准错误,可能是一些额外的静态分析器。疯狂的猜测:分析器可能会因为您既修改并返回参数而感到困惑。这一般来说并不算太不寻常,但也许你的工具链中的某些东西正试图强制执行一些特殊的样式指南?
-
如果将您的方法设为静态和/或删除 return 语句会改变有关此错误消息的任何内容,您可以尝试。
-
请注意,返回值不是必需的,因为您返回作为参数收到的相同对象(在两种情况下),并且调用者已经拥有它。