スーパー タイプ (Shape) と 2 つの子 (Square、Circle など) があるとします。
私はこのようなものを作ろうとしています:
Shape shape = someObject.getShape();
if (shape instanceof Square){
shape = (Square) shape;
// do this
} else if (shape instanceof Circle) {
shape = (Circle) shape;
// do that
}
また、インスタンスを取得することは正しいオブジェクト指向の原則ではないように思われるため、それを行う別の方法はありますか? 乾杯。
編集。私はそれらのメソッドを呼び出そうとしているのではなく、特定のサブタイプを必要とするいくつかのメソッドにそれらを渡したいのです。
edit2基本的に、私はタイプ Shape のコレクションを持っているので、両方のタイプのサブタイプを保持できます。しかし、ある時点での処理に関しては、これら 2 つのサブクラスのどちらであるかを知る必要があるため、サブタイプを引数として取るメソッドにそれを渡すことができます。スーパータイプを引数として簡単に使用できますが、サブタイプ固有のデータを扱うため、安全ではありません。