在下面的代码中,我不想使用instanceof
来了解存储库的类型。
它是获得该类型的唯一方法吗?是否可以通过通配符RepositoryVet<?>
知道de type?这样可以省去我的大量测试。
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;
等...
答案 0 :(得分:1)
好吧,您可以使用存储库中的属性来表示类型,例如一个枚举。 你仍然需要一些测试。
但是,在您的情况下,继承可能是更好的方法:创建一个提供方法List<String> getTaillesUS()
的公共接口(或者List<String> getTailles(TailesType tailesType)
(其中TailesType
将是一个枚举至少值US
)。