[英]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.