fro*_*die 8 java final constants return-value parameter-passing
我刚刚遇到一些令我困惑的代码; 我想澄清两种变化.
例1:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file.getAbsolutePath();
}
Run Code Online (Sandbox Code Playgroud)
宣布file" final" 的目的是什么?由于Java原语是按值传递的,并且getAbsolutePath()只是返回a String,因此变量不会final在另一端(调用方法),是吗?由于file变量只存在于这两行的范围内,因此我无法真正看到该final关键字的任何用途.有什么我想念的吗?有人看到这样做的理由吗?
例2:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file;
}
Run Code Online (Sandbox Code Playgroud)
因为这里正在返回实际对象......这是否意味着file变量将是恒定的/ final在另一侧......?它似乎没有意义.
一般来说,在我看来,你传递一个变量,没有它的访问类型.在中,我可以private在一个带有publicget函数的函数中有一个变量返回它 - 但是通过调用函数接收它的变量必须指定一个访问修饰符.因此,如果它指定public,则返回的变量将public在该范围内.如果指定private,则返回的变量将private在该范围内.有什么区别final吗?变量的"恒定性"是否可以传递?考虑到我对Java的了解,这让我觉得不太可能.
或者我完全忽略了这一点final,上述代码中关键字还有其他目的吗?
编辑:
我与编写代码的原始开发人员进行了核对,他说他只是将final关键字放入,因为他原本以为该方法会更长,并希望确保文件始终保持不变.他还说,他一般都会声明不应该改变的变量final,作为一项全面的规则和原则 - 这两点都是下面提到的答案.因此,出于标准原因,我似乎过多地阅读了一个简单的额外关键字.感谢大家!
Kri*_*ris 15
final在这种情况下,只意味着本地引用file将是不可变的.它在方法之外没有任何意义.一些编码约定主张所有变量都是最终的,除非它们需要是可变的,所以当有人遵循这样的指导时你会看到类似的代码.
| 归档时间: |
|
| 查看次数: |
12520 次 |
| 最近记录: |