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
...