从具有 Boolean 属性为 false 的对象调用 from-java 可能会返回不是 Boolean/FALSE 的boxed Booleans。
这导致的结果是与 false 相等的 boolean,但会在 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。