「犬は陸に住み、魚は水に生き、カエルは水と陸に住んでいます」というような関係を想像してみてください。したがって、関係は動物とその関連する生活環境です。だから私は自分の犬クラス、魚クラス、その他の動物を持っています。私は自分自身の土地クラス、水クラス、および両方のクラスも持っています。これらのクラスはいずれも抽象クラスEnvironmentを拡張しています。実際のJavaクラスを返します
それぞれの環境タイプを説明に関連付けたいと思っているので、私はHashMapを作成します。
しかし、コードを実行すると、HashMapをHashMap < "環境のいくつかのサブクラス"、String>にします。
ここで、タイプ犬、カエル、またはどんな種類の動物であるオブジェクトaがあるとしましょう。 HashMap<Environment, String> = new HashMap<a.getAssociatedEnvironment(), String>;
このgetAssociatedEnvironment()メソッドを作成するにはどうすればいいですか?文字通り次のようなことができますか:
public Class<T> getAssociatedEnvironment(Animal a) {
if(a instanceof Dog)
return Dog.class
if(a instanceof Frog)
return Frog.class
. . .
}
getAssociatedEnvironmentという名前のメソッドのAnimalクラスを返しますか? –
土地や水が環境のインスタンスになるように私に聞こえ、動物のクラスは環境のリストに関連付ける必要があります。土地、水、そして両方のクラスを作るのは間違っているようです。たとえば、Bothのインスタンスを作成することはあまり意味がありません。 – user2357112
@ user2357112が持っている - 実際の解決策が見つかった場合、あなたは「このコードをどうやって解決するか」と尋ねるところで、実際に[XY問題](http://mywiki.wooledge.org/XyProblem)上記のユーザーのコメントによって推奨されるアプローチは、まったく別のアプローチを使用することです。 –