この振る舞いは私には意味がありません:
user=> (type 1)
java.lang.Long
user=> (type (cast Long 1))
java.lang.Long
user=> (type 1)
java.lang.Long
user=> (type (Long. 1))
java.lang.Long
user=> (type (cast Long 1))
java.lang.Long
user=> (BigDecimal. 1)
1M
user=> (BigDecimal. (Long. 1))
CompilerException java.lang.IllegalArgumentException: More than one matching method found: java.math.BigDecimal, compiling:(NO_SOURCE_PATH:22)
user=> (BigDecimal. (cast Long 1))
1M
(BigDecimal. (Long. 1))
まったく同じ引数タイプを持つ他の2つの式が成功するのに、ケースが明確な一致メソッドシグネチャを見つけられないのはなぜですか?
アップデート:
この振る舞いについて私がさらにLong
奇妙だと思うのは、それがタイプに特有のように見えることです。
user=> (BigDecimal. (Long. 1))
CompilerException java.lang.IllegalArgumentException: More than one matching method found: java.math.BigDecimal, compiling:(NO_SOURCE_PATH:1)
user=> (BigDecimal. (Integer. 1))
1M