【发布时间】:2019-03-08 19:25:09
【问题描述】:
我有一个常量类,我试图在运行时使用公共静态最终字符串设置批号常量。我的 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));
}
【问题讨论】:
-
移除final关键字
-
所以如果我多次调用 getBatchNo ,它不会重新运行 parseBatchNo 逻辑?
-
您是否打算只在第一次调用
parseBatchNo方法时运行它的逻辑?然后你需要在某处缓存(“memoize”)结果。 -
@George - "所以如果我多次调用 getBatchNo,它不会重新运行 parseBatchNo 逻辑吗?" 不,像所有方法一样,每次你调用它都会运行调用它。
-
因此,如果要在每次调用时重新运行该方法,那么如果我只是从类中每次调用它,那么使用 static final 的目的是什么。为什么不将其切换为私有并只返回一个字符串?此外,这可能有点离题,但有人可以提供缓存示例吗?
标签: java