gpt4 book ai didi

java - sonarlint 强制将最终类的常量声明为 protected

转载 作者:行者123 更新时间:2023-12-02 01:28:27 30 4
gpt4 key购买 nike

我有一个带有私有(private)构造函数的最终类:

public final class Constants {
public static final Date DEFAULT_DATE;

static {
// some code that creates localDate
DEFAULT_DATE = localDate.toDate();
}

private Constants() {
}
}

sonarlint 发出警告:

 Make DEFAULT_DATE protected
reason: Mutable fields should not be "public static"

声明它 protected 是没有意义的。该类被声明为final - 因此不可能继承。其次,我在其他类中使用 DEFAULT_DATE,因此它必须是公共(public)的。

此外,构造函数被声明为私有(private),因此无法创建任何对象。

为什么 sonarlint 强制对 DEFAULT_DATE 进行保护?

最佳答案

这是因为 Date 类是可变的,因此如果任何对象获取对 Constants 对象的引用,它们就可以在您不知情的情况下更改日期值。最好将其设置为私有(private)并提供一个返回值副本的 getter。

关于java - sonarlint 强制将最终类的常量声明为 protected ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56496228/

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