2012-02-07 3 views

答えて

16

newは、VMが正しく機能していると仮定すると、nullを返すことはできません。

section 15.9.4 of the Java Language Specificationから:

クラスインスタンス生成式の値は、指定されたクラスの新しく作成されたオブジェクトへの参照です。式が評価されるたびに、新しいオブジェクトが作成されます。

0

私の意見では不可能です。何らかの形でJavaでメモリが足りなくなったら、OutOfMemoryError例外が発生します。

3

public class MyClass { 

static { 
    throw new Error("Error"); 
} 

} 

public class MyClass2 { 

    static MyClass test=new MyClass(); 

} 

のような静的初期化子エラー

あなたは、コンテキストを指定せずにあなたの質問をすることはできません。アプリケーションサーバーでは、上記のようにtest = nullのMyclass2が作成されます。 なぜですか?通常、エラーはアプリケーションサーバーによってトラップされるためです。

+0

コードで回答を拡大できますか? –

1

短い回答 - いいえ。

しかし、あなたはobjが最初nullに割り当てられている場合、それはnullままになります。その場合には、コンストラクタから例外をスローすることができます。

6

いいえ、nullを返すことはできません。ただし、例外をスローする可能性があり、その例外の処理方法によっては、例外が処理された後にobj参照がnullのままである可​​能性があります(コードブロックを離れると、例外をキャッチしないと、obj参照は存在しなくなります)したがってそれは問題ではない)。あなたはまだnullで、NullPointerExceptionを引き起こす初期化されていないフィールドにアクセスする場合は、メモリが不足する場合は、コンストラクタで例外の

理由は、例えば、マニホールドある(その場合、あなたはOutOfMemoryErrorを取得)、または。

関連する問題