当使用带有varargs参数的构造函数时,至少要传递一个参数时,我该如何强制?

时间:2019-08-04 20:32:44

标签: java

我不得不承认以下实施不佳的课程:

public class Fari{
    String name;
    String[] group;

    public Fari(String name, String... group) {
        this.name = name;
        this.group = group;
    }
    // getters, setters
}

实际上,这是通过计划名称和至少一个组标签的方式进行的。但是我可以只用一个参数创建一个新的Fari对象,而无需编译erorr:

Fari f = new Fari("A");

以组属性结尾为null的对象结尾。有没有一种方法可以强制至少一个字符串作为varargs参数传递?

我可以将参数String... group更改为List<String>,但随后我也必须接触所有其他类。除此之外,还可以传递一个空列表,这对我没有帮助。如果创建的对象应该具有名称和至少一个组标签,我该怎么办?

2 个答案:

答案 0 :(得分:3)

解决此问题的典型方法是

public Fari(String name, String requiredGroup, String... group)

答案 1 :(得分:0)

如果尺寸小于1,您还可以检查group的尺寸并抛出错误。

public class Fari {

    String name;
    String[] group;

    public Fari(String name, String... group) throws Exception {
        this.name = name;
        if (group.length < 1) throw new Exception();
        this.group = group;
    }
}

当然,您可以使用自己的Exception实现在代码中进行标识。