2024 Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面,了解如何使用本站的相关信息。

0
Java互操作

由于Clojure 1.10 alpha-6已停止支持Java <=7,因此将Java <=8中新增的类添加到Clojure的{{DEFAULT_IMPORTS}}似乎是合理的。

以下是我知道的这些类的列表

Java 7中引入
- AutoCloseable
- ClassValue
- ReflectiveOperationException
- BootstrapMethodError
- SafeVarargs

Java 8中引入
- FunctionalInterface

预审人:Alex Miller

5 个答案

0

评论者:gshayban

除了AutoCloseable之外,其余的类很少使用。老实说,我宁愿显式导入它们,而不是污染ns导入。(使用FunctionalInterface注解的接口,这是一种注解类型,是常见的;显式使用它并不是)

对于尚未由java.base模块加载的类,额外的类加载会有轻微的启动时间成本。我已尝试移除一些很少使用的默认导入(这无疑是破坏性的更改)。

0

评论者:alexmiller

我认为我们应该维持过去所坚持和声明的原则——java.lang中的内容是自动导入的。我不认为自动导入6个类会影响启动时间。

0

评论者:sohta

添加了补丁,以防万一:)

0

评论者:glts

{{java.lang}}中的几个嵌套类也尚未自动导入。其中一些已经导入

`
Thread$UncaughtExceptionHandler
; => java.lang.Thread$UncaughtExceptionHandler

Character$Subset
; 编译错误:语法错误在 (REPL:0:0) 处。
; 无法解析符号:Character$Subset 在此上下文中
`

缺失的导入项如下

  • {{Character$Subset}}
  • `}

  • {{ProcessBuilder$Redirect}}
  • `

  • {{ProcessBuilder$Redirect$Type}}

也许在这里添加这些项会更好。至少我被无法使用裸露的符号感到惊讶。
`}.

0
参考: https://clojure.atlassian.net/browse/CLJ-2383(由 sohta 报告)
...