是否可以在施工期间停止创建对象?

Sar*_*nan 6 java oop

例如,如果构造函数内部发生错误(例如,传入的参数无效),并且我想停止正在创建的对象,则可以返回null而不是对新对象的引用.(我知道在这种情况下,术语返回在技术上是正确的,但你知道我的意思).基本上,是否可以取消对象创建?

请指导我摆脱这个问题......

Bee*_*ope 10

是的,您可以抛出异常,这将终止对象创建.您不能从构造函数返回null或任何其他值.


Sah*_*hoo 8

如果传入的参数无效,则应抛出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

    }

}
Run Code Online (Sandbox Code Playgroud)