常にキャストを使用するケースはほとんどありませんが、実際にキャストを回避できるかどうかを知りたいですか?
1. sf からのインターフェースを検討する - org.springframework.validation.Validator
このインターフェースを実装すると、次のメソッドが得られます。
public void validate(Object event, Errors arg1) {
Event e = (Event) event;
}
このスレッドに触発され、IDE が私に提案するたびに自分がキャストを行うことを本当に心配していたことはありませんでした。そして、それが実際に例外をキャストする結果になったケースはほとんどありません.なぜキャストできないのか、そしてそれに対して何をすべきかを理解することはロケット科学ではありません. さらに、他の開発者が気付くオブジェクトの種類を正確にコメントすることができます。
仮に、サード パーティ ライブラリ インターフェイスの実装が常に Object パラメータになる場合、そのスレッドでの大騒ぎは何ですか? 明らかに、ライブラリの作成者は、オブジェクトのような一般的なものを使用して、さまざまなコンテキストを説明する必要があります。
それとも、この場合、別の方法で行うことができますか?
2.データベースなどの異なるコンテキストから何かを取得します
たとえば、Hibernate は私に List データ構造を返します。美しくないという理由だけで、List から ArrayList にキャストすることは禁止されていますか?
3session.setAttribute()
.; session.getAttribute()
- そしてオブジェクトはサービスメソッドに渡しますか? -ノーキャスティング方法は?
この質問を終えることで、「これは悪いのでやらないでください」というのは間違った態度であるか、最初からコンポーネント/機能が API に存在するべきではないかのいずれかであると真剣に考えています。