有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中接受ArrayList中的字符串作为ReturnType

我在XYZ类中有一个名为abc的变量。 该变量的返回类型为List,但之前的返回类型为String。所以,现在当一个列表作为输入出现时,它被处理,但当一个字符串出现时,它抛出异常。 需要的是使其兼容数据类型列表和字符串。 请帮忙

private List<String> abc;

public List<String> getAbc() {
    return abc;
}

public void setAbc(List<String> abc) {
    this.abc = abc;
}

共 (4) 个答案

  1. # 1 楼答案

    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提到的,这被称为过载

  2. # 2 楼答案

    你正在寻找的概念是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);
    }
    
    
  3. # 3 楼答案

    如果您只需要相同的方法名,那么类似的方法可能会起作用:

    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);
    }
    

    是否要附加到此列表中,或创建一个新的列表,其中只包含一个条目?这是列表的附件

  4. # 4 楼答案

    如何按照@ITFRANK重载方法的建议将字符串设置为列表。。 除非它不起作用