当在布尔属性为 false 的对象上调用 from-java 时,可能返回不是 Boolean/FALSE 的封装布尔值。
这造成的结果是布尔值等于 false,但处于 if 的 true 路径。
`
(def bool (:absolute (from-java (URI. ""))))
bool
=> false
(= bool false)
=> true
(if bool true false)
=> false
`
这会导致非常困惑的行为。
由于 clojure 不会改变 if 的行为 (https://dev.clojure.org/jira/browse/CLJ-1718),并且我们不能控制布尔值的构造,我认为 from-java 应该意识到这个问题并修复它。
可以通过为 Boolean 增加一个额外的方法来修复此问题,该方法以正确的方式重建 Boolean,尽管我不确定最佳方案是什么。