2012-03-28 6 views
0

以下のコードでは、instanceofを使用してリポジトリのタイプを知りたくありません。 タイプを取得する唯一の方法ですか?ワイルドカードRepositoryVet<?>でタイプを知ることは可能ですか?これは、私がたくさんのテストをするのを助けます。"instanceof"を使用しないワイルドカードオブジェクトのタイプ

public ArrayList<String> rechercherTabTailles(String sexe,String SI,RepositoryVet<?> repository) { 
    ArrayList<String> tabTailles; 
    repository.Open(); 
    repository.rechercherspin(sexe); 
    if (SI.compareTo("US") == 0) { 
     if (repository instanceof ChaussureRepository) 
      tabTailles= ((ChaussureRepository) repository).taillesUS; 
     if (repository instanceof ChemiseRepository) 
      tabTailles= ((ChemiseRepository) repository).taillesUS; 
    } 
} 

私の質問を完了させるために: RepositoryVetはすでにabstractClassは次のように定義されています

パブリック抽象クラスRepositoryVetはIRepositoryVet実装{

public ArrayList<String> taillesEU; 
public ArrayList<String> taillesUS; 
public ArrayList<String> taillesUK; 
public ArrayList<String> taillesIT; 
public ArrayList<String> taillesJP; 
public ArrayList<String> taillescm; 
public ArrayList<String> taillesinch; 

などを.... }

"ChaussureRepository"はRepositoryVetを次のように拡張するクラスです:

パブリッククラスChaussureRepositoryがRepositoryVet {

public ArrayList<String> taillesEU; 
public ArrayList<String> taillesUS; 
public ArrayList<String> taillesUK; 
public ArrayList<String> taillesIT; 
public ArrayList<String> taillesJP; 
public ArrayList<String> taillescm; 
public ArrayList<String> taillesinch; 

など....

+1

何。 – Alp

+0

'RepositoryVet'(' instanceof'を使ってテストできるもの)のサブクラスは 'RepositoryVet'の型パラメータと(直接)関連していません。 。 –

+0

'repository'サブクラスには、これが一般的に動作するいくつかのジェネリック型があります。 –

答えて

1

まあ、例えば、タイプを表すために、リポジトリ内のプロパティを使用することができるが拡張さ列挙型 まだいくつかのテストが必要です。

しかし、あなたのケースでは、継承はより良いアプローチかもしれません:メソッドList<String> getTaillesUS()(または多分List<String> getTailles(TailesType tailesType)を(TailesTypeが少なくとも値USを持つ列挙型になります)提供する共通のインタフェースを作成

+0

これが解決策です。どうもありがとうございました – user1298799

関連する問題