我在XYZ类中有一个名为abc的变量。 该变量的返回类型为List,但更早的返回类型为String。因此,现在当列表作为输入时,它会被处理,但当String进入时,它会抛出Exception。 需要使它与数据类型List和String都兼容。 请帮助
private List<String> abc;
public List<String> getAbc() {
return abc;
}
public void setAbc(List<String> abc) {
this.abc = abc;
}
答案 0 :(得分:6)
您要寻找的概念是method overloading
。
方法由其名称和所有参数定义,因此您可以定义两个不同方法,如下所示:
public void setAbc(List<String> abc) {
this.abc = abc;
}
public void setAbc(String abc) {
// Collections.singletonList creates an *immutable* list
// See: https://docs.oracle.com/javase/10/docs/api/java/util/Collections.html#singletonList(T)
this.abc = Collections.singletonList(abc);
}
答案 1 :(得分:5)
如果您需要的只是相同的方法名称,则可以执行以下操作:
public void setAbc(List<String> list) {
this.abc = list;
}
public void setAbc(String str) {
if (this.abc == null) {
this.abc = new ArrayList<>();
}
this.abc.add(str);
}
您是要追加到此列表还是仅在输入时创建一个新列表?这是追加到列表的。
答案 2 :(得分:0)
private List<String> abc;
public List<String> getAbc() {
return abc;
}
public void setAbc(List<String> abc) {
this.abc = abc;
}
public void setAbc(String newItem) {
if (this.abc == null) {
this.abc = new java.util.ArrayList<>();
}
this.abc.add(newItem);
}
您添加一个新方法并追加到列表中。如ItFreak所述,这称为重载。
答案 3 :(得分:0)
如何按照String的@ItFreak重载方法的建议将String设置为List。 直到无法正常工作为止,直到