次の行がnullを返すことは可能ですか?オブジェクトのインスタンス化によってnullが返される条件は何ですか?
MyClass obj = new MyClass();
もしそうなら、戻り値はどのような条件になりますか?
次の行がnullを返すことは可能ですか?オブジェクトのインスタンス化によってnullが返される条件は何ですか?
MyClass obj = new MyClass();
もしそうなら、戻り値はどのような条件になりますか?
new
は、VMが正しく機能していると仮定すると、nullを返すことはできません。
section 15.9.4 of the Java Language Specificationから:
クラスインスタンス生成式の値は、指定されたクラスの新しく作成されたオブジェクトへの参照です。式が評価されるたびに、新しいオブジェクトが作成されます。
私の意見では不可能です。何らかの形でJavaでメモリが足りなくなったら、OutOfMemoryError
例外が発生します。
public class MyClass {
static {
throw new Error("Error");
}
}
public class MyClass2 {
static MyClass test=new MyClass();
}
のような静的初期化子エラー
あなたは、コンテキストを指定せずにあなたの質問をすることはできません。アプリケーションサーバーでは、上記のようにtest = nullのMyclass2が作成されます。 なぜですか?通常、エラーはアプリケーションサーバーによってトラップされるためです。
コードで回答を拡大できますか? –
短い回答 - いいえ。
しかし、あなたはobj
が最初null
に割り当てられている場合、それはnull
ままになります。その場合には、コンストラクタから例外をスローすることができます。
いいえ、nullを返すことはできません。ただし、例外をスローする可能性があり、その例外の処理方法によっては、例外が処理された後にobj
参照がnullのままである可能性があります(コードブロックを離れると、例外をキャッチしないと、obj
参照は存在しなくなります)したがってそれは問題ではない)。あなたはまだnullで、NullPointerException
を引き起こす初期化されていないフィールドにアクセスする場合は、メモリが不足する場合は、コンストラクタで例外の
理由は、例えば、マニホールドある(その場合、あなたはOutOfMemoryError
を取得)、または。
私は、この質問を促したところに興味があります。 –
@KevinD Java認定試験問題のように聞こえます。 –