什么条件导致对象实例化返回null?

Phi*_*lip 4 java null constructor return-value new-operator

以下行是否可以返回null?

MyClass obj = new MyClass();
Run Code Online (Sandbox Code Playgroud)

如果是这样,什么条件会导致返回值为null?

Jon*_*eet 16

new假设VM正常运行,则无法返回null.

Java语言规范的第15.9.4节:

类实例创建表达式的值是对新创建的指定类对象的引用.每次计算表达式时,都会创建一个新对象.


Tho*_*mas 6

不,这不能返回null.但是,它可以抛出一个异常,并且根据你处理异常的方式,在处理异常之后obj引用可能仍为null(如果你离开代码块,例如通过不捕获异常,obj引用将不再存在,因此没关系).

构造函数中异常的原因是多方面的,例如,如果你的内存不足(在这种情况下你会得到一个OutOfMemoryError),或者如果你访问一个仍然为null并且会导致a的未初始化字段NullPointerException.