调用具有为 false 的 Boolean 属性的对象的 from-java 可能会返回非 Boolean/FALSE 的boxed Booleans。
这会导致一个等于 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,尽管我不确定最好的方法是什么。