私はKotlinのMap<String, Any>
からデータをロードしてクラスを初期化しています。このマップはJSONから直接収集されるので、特定のキーが存在するかどうか、またはその値が予想されるタイプのものであるかどうかはわかりません。この地図を解凍するために安全に私は完璧に動作するように表示される、次のことをやっている:Kotlinの任意の配列にキャスト
a = rawData["A"] as? String ?: ""
このデータの一部は、私は配列に開梱していますさらに、ネストされたJSON、です。私は同じようにこれを実行しようとしました:
b = rawData["B"] as? Array<String> ?: arrayOf<String>()
しかし、私は(上記のように)アレイを使用して、これをしようとしたときのIntelliJが
警告言って、大騒ぎを蹴る:(111を、 30)コトリン:未チェックのキャスト:あれ?アレイ< Stringに>
はねじれに自分自身を取得し、この単なるIDEであるか、または、一見他のタイプのために完全に安全であるにもかかわらず配列のため、この方法で本当に危険なのですか?
「null」の各要素を個別にチェックする必要なく、安全に 'Array'にキャストする方法はありますか? –
私はそこにないと信じています。おそらく、構文と戦略の観点からは、いくつかの解決策がありますが、いつか使っているすべての要素に対して実行しなければならないと確信しています。 – zsmb13
あなたの答えを理解することは、要素がまだnullである可能性があるためキャストが安全でないことでした。これは、 'Array'と同様のキャストが安全であることを意味します。しかし、IntelliJはそれと同じ警告を投げている、 '未チェックのキャスト:Any?配列 'へ。私はあなたの答えを誤解してしまったのですか、今ここで違う何かがありますか? –