2011-10-20 5 views
1

私はメソッドを持っており、パラメータとして私はリストを送ります。 方法は次のようになります。私は(たとえばsetSanctionTypes(List<QueuePaymentDTO> items);などのために)別の一覧データ型のパラメータは、このメソッドを使用する必要がメソッドreceiveパラメータとしてさらにデータ型のリスト

public static void setSanctionTypes(List<QueueSueDTO> items) { 

    for (QueueSueDTO dto : items) { 

     StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors()); 

     String sanctionType = sb.toString(); 
     dto.setSanctionType(sanctionType); 
    } 
} 

。 パラメータとして送信したいすべてのクラスはメソッドgetRegres()を持っていますので、setSanctionTypes()メソッドの内容は一般的であり、送信するすべてのクラスで使用できます。

私はこの

public static void setSanctionTypes(List<?> items) { 

    for (Object dto : items) { 

     StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors()); 

     String sanctionType = sb.toString(); 
     dto.setSanctionType(sanctionType); 
    } 
} 

を行う場合はObject型のDTOは)(getRegresについて知りません。私は必要な型にキャストすることができますが、それは1つの具体的な型になり、他のパラメータには使用できません...

私の問題を解決する方法はありますか?おかげさまで

+0

何JavaのReflectionを使ってオブジェクトのクラスを調べる方法について教えてください。 – anonymous1fsdfds

答えて

1

クラスにgetRegres()を実装するように強制するインタフェースを定義しています。そして、あなたはすべてのあなたが必要なクラスとの使用のために、このインターフェイスを実装:

interface Interface { 
    <type> getregres(); 
} 

public static void setSanctionTypes(List<? extends Interface> items) { 
+0

メソッドを定義するクラスがこれらのクラスのルートにある場合にも機能します。インターフェイスはいいですが、ジェネリックスが動作するためには必要ありません。 –

1

QueueSueDTOなどのすべての種類は、共通のインタフェースを実装する必要があります。このようにして、関数をsetSanctionTypes(List<? extends QueueDTO> items)と宣言します。

インタフェースはgetRegresが含まれている必要があり、setSanctionTypesへの引数として使用されているすべてのあなたのクラスに関連する見つけるの他の機能、:

interface QueueDTO 
{ 
    RegresType getRegres(); 
    // maybe some more methods 
} 
2

あなたgetRegresを宣言するインタフェースを持っている場合は()メソッド、そしてあなたのリストのエントリは、それを実装:

public static void setSanctionTypes(List<? extends YourInterface> items) { 

    for (YourInterface dto : items) { 

     StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors()); 

     String sanctionType = sb.toString(); 
     dto.setSanctionType(sanctionType); 
    } 
} 

を "ジェネリック医薬品" についての詳細は:http://download.oracle.com/javase/tutorial/java/generics/index.html

関連する問題