我有一个常量类,我试图在运行时使用 public static final String 设置一个批号常量。我的 IDE 给了我一个警告“静态方法声明为 final”,我想知道我是否做错了什么。file 从 Spring yml 文件中获取值。私有字符串文件;(xxx-12345.txt)public String getBatchNo() { return parseBatchNo(file);}public static final String parseBatchNo(String file) { return file.substring((file.lastIndexOf("-") + 1), (file.length() - 4));}
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
静态方法不受覆盖。
的final
关键字隐藏方法。有关更多详细信息,请参阅评论中的链接。
请注意,您不应依赖该行为,尽管语言允许这样做。您应该始终将静态方法作为<class-name>.<method-name>
.
偶然的你
TA贡献1841条经验 获得超3个赞
应用于方法时,final关键字的含义与应用于字段时的含义不同:它并不意味着“常量”。
您可以使用一些逻辑实现您想要的:
private static String batchNo;
public static String parseBatchNo(String file) {
if (batchNo == null) {
batchNo = file.substring((file.lastIndexOf("-") + 1), (file.length() - 4));
}
return batchNo;
}
(注意,上述方法不是线程安全的。如果您需要从多个线程调用它,它会稍微复杂一些。)
添加回答
举报
0/150
提交
取消