Object以外の親タイプを共有しない2つのタイプのいずれかのオブジェクトをパラメーターとして受け入れる必要があるメソッドを作成しています。たとえば、タイプはDreamsとGarlicです。との両方dreams.crush()
を行うことができますgarlic.crush()
。utterlyDestroy(parameter)
DreamsとGarlicの両方をパラメータとして受け入れるメソッドが必要です。
utterlyDestroy(parameter) {
parameter.crush()
}
Garlicとdreamsはどちらも一部のライブラリの一部であるため、ICrushableインターフェイスを実装する(私が作成できるようにするutterlyDestroy(ICrushable parameter)
)ことはできません。
私のメソッド本体は非常に長いので、オーバーロードするとコードが重複することになります。ぶさいくな。リフレクションを使用して、クラスハッキングを行うことができると確信しています。ぶさいくな。
ジェネリックを使ってみましたが、どうやら私は次のようなものを書くことができません
utterlyDestroy(<T instanceof Dreams || T instanceof Garlic> parameter)
Garlic to Dreamsを型キャストすることは可能ですか?
utterlyDestroy(Object parameter) {
((Dreams)parameter).crush()
}
しかし、これはまだ醜いでしょう。私の他のオプションは何ですか、そして状況に対処するための好ましい方法は何ですか?