我们正在经历将产品代码库从Java 8升级到Java 12的过程。发现的一个问题是,我们的代码在许多情况下都使用下划线字符(_)作为变量名,即不再允许(显然是从Java 9开始)。这是遗留代码,所以我真的不知道为什么要这样写。在大多数情况下,似乎已经定义了一种方法(名为_)来按名称检索资源字符串。例如,这种方法的一个实例如下所示:
JFileChooser chooser = m_directory.getFileChooser ();
chooser.setDialogTitle (_("chooser.title"));
chooser.setFileFilter (ExtensionsFileFilter.withFullDescription (_("chooser.shp"), ".shp"));
chooser.setFileSelectionMode (JFileChooser.FILES_AND_DIRECTORIES);
addProperty (_("labels.dir"), m_directory);
该方法的用法如下:
func someFunction() {
let wkWebView = WKWebView()
wkWebView.loadHTMLString("<html><body></body></html>", baseURL: nil)
wkWebView.navigationDelegate = self as? WKNavigationDelegate
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
//ready to be processed
}
我们正在重命名_方法。但是,我很好奇为什么在我们的代码中使用了这种模式。这是某个时候流行的模式吗?使用某种技术(Swing)时它受欢迎吗?到目前为止,我所有的Google都因为变量不能再被命名为_而大获成功,但是却没有解释为什么可能首先要这样做。原来的开发人员已经不在了,所以我不能问他们。
有人有什么想法吗?
我不认为这是suggested question的副本。该问题标记为“ c”,而我的标记为“ java”。同样,该问题的可接受答案表示_函数是gettext提供的预定义函数。这不适用于我,因为我要询问的_函数实际上是在我们的Java代码库中定义的。话虽如此,建议的问题和此处发布的一些信息的上下文似乎表明存在关联。听起来_函数/方法通常可以理解为在检索可本地化的字符串资源时使用。