java - 通用使用 2 个相同的类但来自不同的包

标签 java generics refactoring

我有两个相同的模型类,但它们位于不同的包中。 第一个是: model.my.prod.Model 和第二个 model.my.test.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 项目结构来避免此类包

关于java - 通用使用 2 个相同的类但来自不同的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44307508/

相关文章:

java - 如何使用 Rhino 桥接包含重载方法且可在 JavaScript 中索引的 Java 类?

class - 当基类隐含时是否应该有关联?

Java 泛型返回类型语法

java - BlueJ Java 复合条件

java - 如何计算快速排序中的比较和交换?

delphi - 来自通用参数类的类引用

java - 批量修改Java代码文件——删除方法、注释等

java - 像 "change method signature"这样的通用参数列表的 Eclipse 重构?

php - 这是 PDO 'good code' 的包装器吗?有没有潜在的问题?

java.io.FileNotFoundException : File configuration. 找不到 yml