为了账号安全,请及时绑定邮箱和手机立即绑定

编译警告“静态方法声明为final”的原因是什么?

编译警告“静态方法声明为final”的原因是什么?

慕姐4208626 2021-10-27 10:20:42
我有一个常量类,我试图在运行时使用 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>.


查看完整回答
反对 回复 2021-10-27
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

静态方法不能通过扩展类来覆盖,因此final在这种情况下关键字是无用的。


查看完整回答
反对 回复 2021-10-27
?
偶然的你

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;

}

(注意,上述方法不是线程安全的。如果您需要从多个线程调用它,它会稍微复杂一些。)


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 296 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信