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