2024年Clojure调查问卷中分享您的想法!

欢迎!有关如何使用本系统的更多信息,请参阅关于页面。

0
Java互操作

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

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