让我说我有这段代码:
public class MyClass {
public final static int valueA = 0;
public final static int valueB = 1;
private int parameter = -1;
public MyClass(int parameter) {
if(parameter != valueA && parameter != valueB) {
throw new IllegalArgumentException("Exception description here");
}
this.parameter = parameter;
}
}
这是最佳做法吗?或者是否有更好的方法来承认,无论构造函数传递的值是什么,它都具有与其中一个变量相同的值?
答案 0 :(得分:6)
也许你应该研究Enum
s。
public enum MyEnum {
A(0),
B(1);
private int parameter;
public MyEnum(int parameter)
{
this.parameter = parameter;
}
}
基本上,这会强制您只能拥有parameter = 0
或parameter = 1
的对象。但是,这也只允许每种类型的一个实例(0,1等等),因此根据您的使用情况,这可能不起作用。
答案 1 :(得分:6)
Java API包含许多在其构造函数中抛出异常的类,因此没有任何问题。
示例:
在java.net.URI
课程中:
public URI(String str) throws URISyntaxException {
new Parser(str).parse(false);
}
在java.util.ArrayList
课程中:
public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}