例如,如果构造函数内部发生错误(例如传入的参数无效),并且我想停止正在创建的对象,则可以返回null而不是对新对象的引用。 (我知道在这种情况下术语返回在技术上是正确的,但你知道我的意思)。基本上,是否可以取消对象创建?
请指导我摆脱这个问题...
答案 0 :(得分:9)
是的,您可以抛出异常,这将终止对象创建。您不能从构造函数返回null或任何其他值。
答案 1 :(得分:7)
如果传入的参数无效,则应抛出带有描述性消息的IllegalArgumentException
。如果出现非法NullPointerException
值,则应抛出null
。
这是一个BigCar
类的示例,要求其引擎为> 4000 CC。
public class BigCar {
private final Engine engine;
public BigCar(Engine engine) {
if (engine == null)
throw new NullPointerException("Must provide an engine to our car");
if (engine.getCC() <= 4000)
throw new IllegalArgumentException(
"Engine should be bigger than 4000 CC");
this.engine = engine;
}
public static void main(String... args) {
// Size of engine is 2000CC
Engine engine = new Engine(2000);
BigCar myBigCar = new BigCar(engine); // Exception; Engine should be
// bigger than 4000 CC
}
}
答案 2 :(得分:0)
使用getters和setters方法设置参数的值,如果值无效则抛出异常或显示无法创建对象的消息框。
public class A {
private String Name;
public void SetName(String name) {
if (name.equals(null) || name.equals(""))
throw new IllegalArgumentException("name can not be null or empty");
}
public A(String name) {
SetName(name);
}
}
喜欢这个Simon