ダウンキャストとは、基本クラス(またはインターフェイス)からサブクラスまたはリーフクラスにキャストすることです。
ダウンキャストの例は、System.Object
他のタイプにキャストする場合です。
ダウンキャストは人気がありませんが、コードの匂いかもしれません。例えば、オブジェクト指向の教義は、ダウンキャストの代わりに仮想メソッドまたは抽象メソッドを定義して呼び出すことを好むことです。
- ダウンキャストの適切で適切なユースケースは、もしあれば、何ですか?つまり、ダウンキャストするコードを書くことが適切なのはどのような状況ですか?
- 答えが「なし」である場合、ダウンキャストが言語でサポートされているのはなぜですか?
ToString
)。もう1つの例は「Javaコンテナー」です。これは、Javaがジェネリックをサポートしていないためです(C#はサポートしています)。stackoverflow.com/questions/1524197/downcast-and-upcastは、ダウンキャスティングとは何であるかを示していますが、適切なタイミングの例はありません。
before Java had support for generics
ではありませんbecause Java doesn't support generics
。そして、amonはほとんどあなたに答えを与えました-あなたが使っている型システムがあまりにも制限的で、あなたがそれを変更する立場にないとき。