0

私はAndroidが初めてです。コーディングを大幅に遅らせる原因の 1 つは、次のようなステートメントによって生成されるエラーです。

String logoPath = infoMap.get("LogoPath");

受け入れられるためには、 String への明示的なキャストが必要なようです。

String logoPath = (String)infoMap.get("LogoPath");

この明示的なキャスト要件をオフにすることはできますか? 私はすでにコンパイラに文字列を期待するように言っています...

4

1 に答える 1

3

この明示的なキャスト要件をオフにすることはできますか?

infoMap.get("LogoPath")式をタイプに変更できる場合のみStringinfoMap現時点で何があるかはわかりませんが、それを宣言できればMap<String, String>、うまくいくはずです。おそらくMap、現時点では生のタイプを使用していますか?

infoMap.get(...)returnに変更できない場合Stringは、キャストが絶対に必要です。基本的に、あなたはコンパイラに対して、「これをチェックできないことはわかっていますが、このメソッドによって返される値が文字列参照 (または null) であることは確かです。代わりに実行時にチェックしてください」と言っています。また、コードを読んでいる人に対して、理論的には (少なくとも) うまくいかない可能性があることを警告する役割も果たします。

キャストは、型システムが期待どおりに効果的に機能していない状況を示しています。メソッドが互換性のある参照を返すことをコンパイル時に確認できるようにしたいと考えています。それを実現するために何ができるかを確認してください。それができない場合は、キャストで立ち往生しています.getString

于 2013-09-12T08:55:34.953 に答える