Scala convertido em um tipo variável
Eu tenho o seguinte código para transmitirvalor para o tipo depadrão:
def fct[T](value: Any, default: T): T = {
val result = value.asInstanceOf[T]
println(result, result.getClass.getName, result.isInstanceOf[T])
result
}
val res = fct("foo", 42)
Qual resultado é:
(foo,java.lang.String,true)
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at scala.runtime.BoxesRunTime.unboxToInt(Test.sc2.tmp)
at #worksheet#.res$lzycompute(Test.sc2.tmp:7)
at #worksheet#.res(Test.sc2.tmp:7)
at #worksheet#.#worksheet#(Test.sc2.tmp:7)
A pergunta é: por que o println é exibido? O elenco deve falhar. Eu tentei tentar / pegar as 3 linhas, mas nenhuma exceção é gerada durante a chamada de função.