我收到与我的一个字段声明有关的警告,并想知道处理它的最佳做法是什么
public class ModeloCatalogo extends Modelo {
private static ArrayList<String> excluidas = new ArrayList<>();
...bunch of irrelevant fields...
private static void functionThatLoadsValuesIntoArrayList(){
excluidas.add("String 1");
...
excluidas.add("String n");
}
...bunch of irrelevant methods...
}
在字段声明中,netbeans警告“字段可以是最终的”,可以通过以下方式解决:
private static ArrayList<String> EXCLUIDAS = new ArrayList<>();
请注意,如果不是大写形式,由于命名约定,netbeans会生成不同的警告。 (为清楚起见,在编辑中添加了
对于命名约定,这应该是大写的,这使我感到畏缩,似乎并不正确。
通过在将值加载到数组中的函数内部初始化数组来消除警告。
private static ArrayList<String> excluidas;
private static void functionThatLoadsValuesIntoArrayList(){
excluidas = new ArrayList<>();
excluidas.add("String 1");
...
但是它降低了代码的可读性,恕我直言。
所以这让我开始思考,摆脱警告的正确方法是什么?
答案 0 :(得分:2)
NetBeans可能建议创建字段final
,因为您仅在初始化期间为其分配了一个值,而不在此后重新分配它。
常量的命名约定在Java Language Specification中进行了说明,
[...]和类类型的最终变量通常可以是一个或多个单词,首字母缩写词或缩写的序列,全部为大写字母,并用下划线“ _”字符分隔
但是,it is argued可变的static final
字段不应被视为常量,因此应使用常规字段命名。
如果类型可变,则较新版本的NetBeans不应显示描述的重命名字段警告,请参见this comment。确保您使用的版本是最新版本,并且尚未禁用此检查。
但是您确定该字段首先应该是static
吗?如果方法functionThatLoadsValuesIntoArrayList
可以在您当前的设计中为其分配一个值,则该字段可能不应该是静态的,尽管很难用这么小的代码段来说明。