スーパークラスのコンストラクタを呼び出す前に、コンストラクタの検証パラメータ

LDN:

例えば、このようなコンストラクタ:

public class Car extends Vehicle {
     public Car(Car a){
         super(a.getName()); //what if 'a' is null 
     }
}

私は()を呼び出す前に、スーパーパラメータの状態を確認することはできません。

Illya Kysil:

私は、この場合にはファクトリメソッドを使用することをお勧めします:

public class Car extends Vehicle {
    private Car(String name){
        super(name);
    }

    public static Car of(Car a) {
        Objects.requireNonNull(a, "a is required");
        return new Car(a.getName());
    }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=212505&siteId=1