最好选择:重载或唯一方法名称

时间:2018-12-28 08:44:50

标签: java

我有一个实用程序类以及我最初的编写方式:

class UtilsWithOverloading {
    public static <T extends Item> T fill(T item, String name) {
          item.setName(name);
          return item;
    }

    public static <T extends Item> T fill(T item, Long id) {
          item.setId(id);
          return item;
    }

    public static <T extends Item> T fill(T item, Double diameter) {
          item.setDiameter(diameter);
          return item;
    }
}

但是在该类中,当我将第二个参数传递为null时,存在测试问题。 之后,我决定使用原语重写此类:

class UtilsWithOverloadingWithPrimitive {
    public static <T extends Item> T fill(T item, String name) {
          item.setName(name);
          return item;
    }

    public static <T extends Item> T fill(T item, long id) {
          item.setId(id);
          return item;
    }

    public static <T extends Item> T fill(T item, double diameter) {
          item.setDiameter(diameter);
          return item;
    }
}

但是也可以在不使用重载的情况下重写此类:

class UtilsWithUniqNaming {
    public static <T extends Item> T fillByName(T item, String name) {
        item.setName(name);
        return item;
    }

    public static <T extends Item> T fillById(T item, Long id) {
        item.setId(id);
        return item;
    }

    public static <T extends Item> T fillByDiameter(T item, Double diameter) {
        item.setDiameter(diameter);
        return item;
    }
}

我的问题是,在我的情况下确切使用什么更好? 分享您的经验,哪种类在Java代码中会更合适

class Item {
    private String name;
    private Long id;
    private Double diameter;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Double getDiameter() {
        return diameter;
    }

    public void setDiameter(Double diameter) {
        this.diameter = diameter;
    }
}

1 个答案:

答案 0 :(得分:1)

在这种情况下,我希望使用不同的唯一方法名称,因为您的示例基本上取决于第二个参数。

仅当我的函数采用不同数量的参数时,我才会使用函数重载。