我有一个实用程序类以及我最初的编写方式:
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;
}
}
答案 0 :(得分:1)
在这种情况下,我希望使用不同的唯一方法名称,因为您的示例基本上取决于第二个参数。
仅当我的函数采用不同数量的参数时,我才会使用函数重载。