在使用带有可变参数的构造函数时,我如何强制必须传递至少一个参数?

不可否认,我有以下实施不佳的课程:


public class Fari{

    String name;

    String[] group;


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

        this.name = name;

        this.group = group;

    }

    // getters, setters

}

这实际上是以这样一种方式计划的,即传递名称和至少一个组标签。但是我可以只用一个参数创建一个新的 Fari 对象而不会出现编译错误:


Fari f = new Fari("A");

以 group 属性为 null 的对象结尾。有没有办法强制将至少一个字符串作为可变参数参数传递?


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


呼唤远方
浏览 116回答 2
2回答

白猪掌柜的

解决这个问题的典型方法是public&nbsp;Fari(String&nbsp;name,&nbsp;String&nbsp;requiredGroup,&nbsp;String...&nbsp;group)

ABOUTYOU

group如果大小 < 1,您还可以检查大小并抛出错误。像这样:public class Fari {&nbsp; &nbsp; String name;&nbsp; &nbsp; String[] group;&nbsp; &nbsp; public Fari(String name, String... group) throws Exception {&nbsp; &nbsp; &nbsp; &nbsp; this.name = name;&nbsp; &nbsp; &nbsp; &nbsp; if (group.length < 1) throw new Exception();&nbsp; &nbsp; &nbsp; &nbsp; this.group = group;&nbsp; &nbsp; }}当然你可以使用你自己的Exception实现来在你的代码中识别它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java