[英]Generic use of 2 same classes but from different packages
我有兩個相同的模型類,但它們在不同的包中。 第一個是: model.my.prod.Model
和第二個model.my.test.Model
我還有一個這個model.my.prod.Model
的簡單映射器, model.my.prod.Model
Model
類作為參數:
public class Mapper{
private static Map<Model, String> models= new HashMap<>();
static {
models.put(Model.IMAGE_JPG, MediaType.IMAGE_JPEG_VALUE);
models.put(Model.IMAGE_GIF, MediaType.IMAGE_GIF_VALUE);
}
public static String createModelMap(Model model) {
if (models.containsKey(model)) {
return models.get(model);
} else {
throw new ModelException("Exeception");
}
}
}
現在,我想用這個Mapper
也model.my.test.Model
,是有可能沒有這個副本Mapper
和更改Model
包?
您可以使用完全限定的類名。 它會使你的代碼變得丑陋,但你可以在Mapper中使用Model類。
所以,而不是
public static String createModelMap(Model model)
你將有兩種方法
public static String createModelMap(model.my.prod.Model model)
public static String createModelMap(model.my.test.Model model)
另外,我建議您使用不同且更有意義的名稱重命名這兩個類。 而且,為生產和測試類提供包也是一個壞主意,您可以使用默認的maven / gradle項目結構來避免這樣的包
您可以使用Object和顯式轉換(必要時)
public class Mapper{
// private static Map<Model, String> models= new HashMap<>();
private static Map<Object, String> models= new HashMap<>();
static {
models.put(Model.IMAGE_JPG, MediaType.IMAGE_JPEG_VALUE);
models.put(Model.IMAGE_GIF, MediaType.IMAGE_GIF_VALUE);
}
// public static String createModelMap(Model model) {
public static String createModelMap(Object model) {
if (models.containsKey(model)) {
return models.get(model);
} else {
throw new ModelException("Exeception");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.