【发布时间】:2019-08-05 04:48:15
【问题描述】:
诚然,我有以下实施不佳的课程:
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");
以组属性为空的对象结尾。有没有办法强制将至少一个字符串作为可变参数传递?
我可以将参数String... group 更改为List<String>,但我还必须触及所有其他类。除此之外,可以传递一个空列表,这对我没有帮助。如果创建的对象应该有一个名称和至少一个组标签,我该怎么做?
【问题讨论】:
-
你想在编译时检查还是在运行时检查?
-
如果你需要传递参数,它不是可变参数。您可以将构造函数更改为
public Fari(String name, String group, String... otherGroups)以强制指定至少一组 -
@Progman 在运行时最多不应该存在没有组名的对象。如果在编译过程中已经可以检查它当然更好
标签: java