可变字段不应 "public static"
Mutable fields should not be "public static"
我收到以下行的 sonarQube 错误,请专家建议如何解决这个问题?提前致谢
protected static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"};
您可以将此数组更改为 private
变量。
然后添加一个 static
方法,该方法 returns 此数组的副本,或此数组支持的不可变 List
。
例如:
private static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"};
protected static List<String> getColumnNames() {
return Collections.unmodifiableList(Arrays.asList(COLUMN_NAMES));
}
或者您可以将数组变量替换为不可修改的 List
而不是使用该方法。这会更有效(因为 List
将被创建一次,而不是在每次调用 static
方法时创建):
protected static List<String> COLUMN_NAMES = Collections.unmodifiableList(Arrays.asList("date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"));
您可以将 COLUMN_NAMES
设为私有并简单地 return 克隆它,如下所示:
private static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"};
protected static String[] getCloneArray()
{
return COLUMN_NAMES.clone();
}
这样你原来的数组就不会被修改
我收到以下行的 sonarQube 错误,请专家建议如何解决这个问题?提前致谢
protected static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"};
您可以将此数组更改为 private
变量。
然后添加一个 static
方法,该方法 returns 此数组的副本,或此数组支持的不可变 List
。
例如:
private static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"};
protected static List<String> getColumnNames() {
return Collections.unmodifiableList(Arrays.asList(COLUMN_NAMES));
}
或者您可以将数组变量替换为不可修改的 List
而不是使用该方法。这会更有效(因为 List
将被创建一次,而不是在每次调用 static
方法时创建):
protected static List<String> COLUMN_NAMES = Collections.unmodifiableList(Arrays.asList("date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"));
您可以将 COLUMN_NAMES
设为私有并简单地 return 克隆它,如下所示:
private static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
"account","emailAdress","mobilePhoneNumber","emailStatus"};
protected static String[] getCloneArray()
{
return COLUMN_NAMES.clone();
}
这样你原来的数组就不会被修改