java - 清空最终变量

标签 java null final

<分区>

为什么下面的代码是可能的? (这只是我在处理其他代码时想到的一个例子)

public String getLogIdentifierFromFile(final File file) {
    //this.file = null; //Gives compiler error as obviously expected
    nullify(file);
    return "";
}

public void nullify(Object object) {
    object = null;
}

我怎样才能确保 top 函数的 final 确实有效?这次是我制作nullify方法,但也可以是我的方法需要调用的任何人的代码。

最佳答案

代码并不像您想象的那样。

final 适用于引用。您的代码取消了原始 final 引用的 non-final 副本The copy is taken when you call nullify().

如果在调用 nullify() 后检查 file,您会发现它保持不变。

因此,这不是 final 工作方式的漏洞。

关于java - 清空最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951146/

相关文章:

java - Java 中的 Setter 参数最终

java - 边类型更改为正交,无法单击边

java - 收到 StackOverFlowError 且不确定原因?

java - 理论: Two system integration through web service

java - 如何停止在数组中打印 null

java - 为什么在 Java 中使用 final 实例类变量?

java - PreparedStatement批处理执行只执行最后一个批处理

scala - 如何使用过滤器从scala中的数据框中获取包含空值的行集

java - 在一行中对可能为 null 的对象调用 void

java - 如何初始化最终对象数组