欢迎!请查看关于页面以获取更多关于这是如何运作的信息。
由于Clojure 1.10 alpha-6不再支持Java <=7,现在似乎有理由将Java <=8中引入的{{java.lang}}包中的新类添加到Clojure的{{DEFAULT_IMPORTS}}中。
以下是我知道的那些类的列表
在Java 7中引入- AutoCloseable- ClassValue- ReflectiveOperationException- BootstrapMethodError- SafeVarargs
在Java 8中引入- FunctionalInterface
已由:Alex Miller预审
评论由:gshayban
除了AutoCloseable以外,其余那些类的使用频率都很低。我想明确地导入它们,而不是污染ns导入。毕竟,带有@FunctionalInterface注解的接口、注解类型很常见;明确使用它也是可以的。
额外类加载(java.base模块已经加载的类除外)会导致轻微的启动时间成本。我已经试验过去掉一些很少使用的默认导入(无疑是一个破坏性变更)。
评论由:alexmiller
我认为我们应该坚持过去一直以来的做法——java.lang中的内容会被自动导入。我不认为导入6个类会影响启动时间。
评论由:sohta 发布
添加了补丁,以防万一 :)
评论由:glts 发布
Java.lang中的一些嵌套类还没有自动导入。其中一些已经导入了
`Thread$UncaughtExceptionHandler;=>java.lang.Thread$UncaughtExceptionHandler
`
Character$Subset;在(REPL:0:0)处编译时出现语法错误。;在该上下文中无法解析符号:Character$Subset `
缺少的导入如下
`}
{{ProcessBuilder$Redirect$Type}}
也许在这里也添加这些会更好。至少我觉得不使用裸露的 `}.