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报告)
...