如何确定 Java 方法是否修改作为参数传递的对象
2022-09-01 09:37:41
我来自C++背景,目前正在学习Java。当我尝试使用一些第三方库时,出现了一个问题。如何确定对以对象引用为参数的方法的调用是否修改了对象?在C++由于使用了const关键字,这一点很清楚。如果方法签名为:
void foo(Boo& boo);
我知道引用的对象可能会被修改,而如果方法签名是:
void foo(const Boo& boo);
编译器保证引用的对象不被修改。
我没有在Java中看到类似的东西,因为只有引用本身可以被声明为final,而不是被引用的对象,并且最终的参数首先没有多大意义,因为它无论如何都是通过值传递的。因此,当我看到这样的方法时:
void foo(Boo boo) {...}
如何确定boo引用的对象是否在函数体内进行了修改(可能使用注释)?如果没有办法知道,是否有一些广泛使用的约定或一些最佳实践来避免混淆和错误?