我刚刚遇到了一些让我有些困惑的代码;我想澄清两个变化。
示例 1:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file.getAbsolutePath();
}
file
声明“ ”的目的是final
什么?由于 Java 原语是按值传递的,并且getAbsolutePath()
只是返回 a String
,因此变量不会final
在另一边(调用方法),对吗?而且由于file
变量只存在于这两行的范围内,我真的看不出final
关键字的任何用途。有什么我想念的吗?有人看到这样做的理由吗?
示例 2:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file;
}
因为这里实际的对象被返回......这是否意味着file
变量将是常量/final
在另一边......?这似乎没有意义。
一般来说,在我看来,你传递了一个变量,没有它的访问类型。如在,我可以private
在一个函数中使用一个public
返回它的 get 函数的变量 - 但是通过调用函数接收它的变量必须指定一个访问修饰符。因此,如果它指定public
,则返回的变量将public
在该范围内。如果它指定private
,则返回的变量将private
在该范围内。有区别final
吗?变量的“恒定性”是可以传递的吗?考虑到我对 Java 的了解,这让我觉得不太可能。
还是我完全忽略了这一点,并且final
上面代码中的关键字还有其他用途?
编辑:
我与编写代码的原始开发人员进行了核对,他说他只输入final
关键字是因为他最初认为该方法会更长,并希望确保文件始终保持不变。他还说,他通常将不应更改的变量声明为final
,作为全面的规则和原则上的排序 - 以下两个答案都提到了这一点。因此,出于标准原因,我似乎对一个简单的额外关键字阅读过多。谢谢大家!