小编Ita*_*key的帖子

如何确定Java方法是否修改作为参数传递的对象

我来自C++背景,目前我正在学习Java.当我尝试使用某些第三方库时出现了一个问题.如何确定对作为参数的对象引用的方法的调用是否修改了对象?在C++中,由于使用了const关键字,因此很清楚.如果方法签名是:

void foo(Boo& boo);
Run Code Online (Sandbox Code Playgroud)

我知道引用的对象可能会被修改,而如果方法签名是:

void foo(const Boo& boo);
Run Code Online (Sandbox Code Playgroud)

编译器保证不会修改引用的对象.

我没有在Java中看到类似的东西,因为只有引用本身可以被声明为final,而不是引用的对象,并且最终的参数在第一个地方没有多大意义,因为它无论如何都是通过值传递的.因此,当我看到一个方法,如:

void foo(Boo boo) {...}
Run Code Online (Sandbox Code Playgroud)

如何确定boo引用的对象是否在函数体内修改(可能使用注释)?如果没有办法知道,是否有一些广泛使用的约定或一些最佳实践来避免混淆和错误?

java immutability

32
推荐指数
4
解决办法
2811
查看次数

标签 统计

immutability ×1

java ×1