C#のように "instanceof"を使わずにforループで多形性をどう扱うことができるのだろうかと思っていました。ここ は、私が持っているものです。Java forループとポリモーフィズム
抽象クラスA:Aを拡張しての抽象メソッドを実装し
public abstract class A
{
public abstract Map<Long, ? extends A> getNodes();
public abstract void setNodes(Map<Long, ? extends A> n);
}
BとCクラス:
public class B
{
private Map<Long, C> childNodesC;
@Override
public Map<Long, ? extends A> getNodes()
{
return childNodesC;
}
@Override
public void setNodes(Map<Long, ? extends A> n)
{
for(C child : n)
childNodesC.put(child.getId(), child);
}
}
は、forループのようなものですこれはJavaでsetNodes()メソッドで可能ですか?つまり、私のループでは、Aオブジェクト(ここではBまたはCオブジェクトのいずれか)のリスト内のすべてのCオブジェクトに対してのみ繰り返したいとJavaが理解する方法があります。
それとも私はそのような正しい方法か何かで多型を使用していない...または多分これは「instanceofの」オペレータの使用状況の真のケースです:)
(うんあなたは正しい、私は"instanceof"演算子が好きではないと思うので、正しく処理していないと思うので、キャストとインスタンスを修正する必要があります。それは私には「汚い」と思われますが、間違っているかもしれません。 )それは非常に一般的です!)
ありがとう!
'instanceof'を使うのはちょっと間違っています。しかし、私はここでデザイン全体がちょっと間違っていると思う:Bの 'setNodes(nodes)'が実際に与えられたノードのいくつかを無視することは、ユーザにはっきりしない。 – toto2