gpt4 book ai didi

java - java类的字段应该总是final的吗?这是一个很好的做法吗?

转载 作者:行者123 更新时间:2023-11-30 03:27:17 24 4
gpt4 key购买 nike

Java 类的字段应该始终是 Final 吗?这是一个好的做法吗?

我知道“最终”对于原始类型或对象类型意味着什么。我的问题是我应该经常(或总是)使用带有 Final 的字段吗?

例如

public class MemoryUsage {
private final long init;
private final long used;
private final long committed;
private final long max;

/**
* Constructs a <tt>MemoryUsage</tt> object.
*
* @param init the initial amount of memory in bytes that
* the Java virtual machine allocates;
* or <tt>-1</tt> if undefined.
* @param used the amount of used memory in bytes.
* @param committed the amount of committed memory in bytes.
* @param max the maximum amount of memory in bytes that
* can be used; or <tt>-1</tt> if undefined.
*
* @throws IllegalArgumentException if
* <ul>
* <li> the value of <tt>init</tt> or <tt>max</tt> is negative
* but not <tt>-1</tt>; or</li>
* <li> the value of <tt>used</tt> or <tt>committed</tt> is negative;
* or</li>
* <li> <tt>used</tt> is greater than the value of <tt>committed</tt>;
* or</li>
* <li> <tt>committed</tt> is greater than the value of <tt>max</tt>
* <tt>max</tt> if defined.</li>
* </ul>
*/

最佳答案

举一个简短的例子,假设您有一个“学生”类(class)。在那里,您有一个字段“birthDate”。

现在,该字段可以是最终字段,因为可以安全地假设,如果昨天您的出生日期是 1980 年 1 月 20 日,那么明年仍然是该日期。

但是,如果你有一个字段:

private String major;

这不应该是最终的。你会让学生不可能改变专业,而这种情况经常发生。

因此,对于原始类型:如果该值在对象的整个应用程序流程/生命周期内永远不会改变,那么它可以(但不一定)是最终的。

如果它是一个对象:如果不可能重新引用它,它可以是最终的。

但是,不。远非所有变量都应该是最终的。

关于java - java类的字段应该总是final的吗?这是一个很好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29892678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com