このクラスには、他のクラスから呼び出される一連の静的メソッドがあるコードが必要です。サブクラスの型に基づいて別のメソッドを呼び出す
私は、次のような階層で、いくつかの新しいクラスを作成しました:
public abstract class Superclass implements Comparable, Serializable
{
//Superclass stuff
}
public class MidClass extends Superclass implements Comparable, Serializable
{
//MidClass stuff
}
public class SubClass1 extends SuperClass implements Comparable, Serializable
{
//SubClass1 stuff
}
public class SubClass2 extends MidClass implements Comparable, Serializable
{
//SubClass2 stuff
}
私はすべての異なるサブクラスタイプごとに異なる静的メソッドを呼び出す必要があることを考えると、私はまた、過負荷に以下を追加しましたファーストクラスのメソッド:クラスで
public static objForMidClass elaborationMethod(MidClass midClass)
{
//Stuff to do with MidClass obj
}
public static objForSubClass1 elaborationMethod(SublClass1 subClass1)
{
//Stuff to do with SubClass1 obj
}
public static objForSubClass2 elaborationMethod(SubClass2 subClass2)
{
//Stuff to do with SubClass2 obj
}
私は
//Inside "object" and "inputList" Lists there's the correct type/subtype
List<SuperClass> inputList = (List<SuperClass>) object;
if (inputList != null && inputList.size() > 0)
{
for(Iterator<SuperClass> it = inputList.iterator(); it.hasNext();)
{
SuperClass item = it.next();
//Next line gives the error:
//"elaborationMethod(MidClass) in the type classWithStaticMethods is not applicable for the arguments (Superclass)"
AnotherClass retItem = classWithStaticMethods.elaborationMethod(item);
{
}
ような何かをした静的メソッドを呼び出すところから
渡されたオブジェクトがSuperClassのサブクラスのすべての洞察であることを認識しないため、対応するSubClass型の静的メソッドを検索する必要があるのはなぜですか?
この状況をモデル化する正しい代替方法は何か教えてください。
'classWithStaticMethods'の作成方法は不明です。 – freedev
質問の冒頭で私が話していたのは「静的メソッドの束を持つ」クラスだけです。私が使用するオーバーロードされたメソッドは "elaborationMethod"であり、宣言はコードの2番目のスニペットに示されています –
[パラメータの実際の型に基づいたオーバーロードされたメソッドの選択]の重複が考えられます(http://stackoverflow.com/questions/1572322/overloaded-メソッド選択に基づくパラメータの実数型) – Axel