daz*_*ito 1 java constructor exception
让我说我有这个代码:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是最佳做法吗?或者是否有更好的方法来承认,无论构造函数传递的值是什么,它都具有与这些变量之一相同的值?
也许你应该研究一下Enum
.
public enum MyEnum {
A(0),
B(1);
private int parameter;
public MyEnum(int parameter)
{
this.parameter = parameter;
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,这迫使你只能拥有对象parameter = 0
,或者parameter = 1
.但是,这也只允许每种类型的一个实例(0,1,等等),因此根据您的使用情况,这可能不起作用.
Java API包含许多在其构造函数中抛出异常的类,因此没有任何问题.
示例:
在java.net.URI
课堂上:
public URI(String str) throws URISyntaxException {
new Parser(str).parse(false);
}
Run Code Online (Sandbox Code Playgroud)
在java.util.ArrayList
课堂上:
public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}
Run Code Online (Sandbox Code Playgroud)