1. ホーム
  2. java

コンストラクタはNULLオブジェクトを返せるか?

2023-10-19 21:33:17

質問

古いコードを調べているときに、この宝石に出会いました。

MyObject o = new MyObject("parameter");
if (o == null) o = new MyObject("fallback parameter");

2行目はEclipseでデッドコードとマークされていますが、その理由は理解できます。例外は明示的に投げられていないようです。 MyObject のコンストラクタが何らかの例外を投げることは不可能です(たとえば NullPointerException s).

私の質問は なぜ は null チェックがあるのでしょうか?以前、Java の古いバージョンでは、コンストラクタが null を返すことが可能だったのでしょうか?それとも、これは単に無駄で死んだコードなのでしょうか?

どのように解決するのですか?

このコードは、Javaのどのバージョンでも死んでいます。コンストラクタが null を返すことは不可能であり、たとえコンストラクタから例外が投げられたとしても、次の行は呼び出されることはありません。