私は次のコードを実行しようとしますが、コードはコンパイル渡すことはできません、私はエラーを取得:Kotlinで「長時間のスマートキャストが不可能」というエラーが表示されるのはなぜですか?しかし、それはJavaでOkですか?
Smart cast to 'Long' is impossible, because 'i' is a mutable property that could have been changed by this time
なぜ?
class MyClass1(var i: Long?) {
fun change(): Long? {
if (i != null) {
return i + 10L
} else {
return 5L
}
}
}
コードMyClass2をJavaで作成しましたが、それはうまく動作します。なぜですか?
class MyClass2{
private Long i;
public MyClass2(Long k){
i=k;
}
public Long change(){
if (i!=null){
return i+10L;
}else {
return 5L;
}
}
}
'i'は' change'にローカルではありません。だから、 'change'以外の何かが、ヌルチェックと' return'に 'i'を使うところで' i'を修正してしまった可能性があります。 – Michael