JDK 9 中引入了一个新的内嵌类 Runtime.Version。
然而,我必须使用完全限定的名称才能使用它
(Runtime$Version/parse (System/getProperty "java.version"))
Syntax error compiling at ...
No such namespace: Runtime$Version
;; fully qualified name works
(java.lang.Runtime$Version/parse (System/getProperty "java.version"))
#object[java.lang.Runtime$Version 0x39a4ea03 "11.0.2"]
这是预期的吗?
我尝试了另一个(私有的)内嵌类,也存在相同的行为
String$CaseInsensitiveComparator
Syntax error compiling ...
Unable to resolve symbol: String$CaseInsensitiveComparator in this context
Java 互操作性参考Java Interop reference说内嵌类可以按Classname$NestedClassName
访问,但没有具体提到这个问题。
这对我来说有点不一致。
诚然,我仍然可以导入内嵌类并使用它 - 但这是我未曾预料到要做的。
(import 'java.lang.Runtime$Version)
(Runtime$Version/parse (System/getProperty "java.version"))
#object[java.lang.Runtime$Version 0x781187fa "11.0.2"]