たとえば、コンストラクタ内でエラーが発生した場合(たとえば、パラメータが渡された場合など)、新しいオブジェクトへの参照ではなくnullを返すことができるように、作成中のオブジェクトを停止したいとします。 (この場合、リターンという言葉は技術的には正しいと思っていますが、私の言うことを知っています)。基本的に、オブジェクトの作成をキャンセルすることは可能ですか?建設中にオブジェクトが作成されるのを止めることはできますか?
4
A
答えて
9
はい、あなたがオブジェクトの作成を終了します例外をスローすることができます...この問題から抜け出すために私を導いてください。コンストラクタからnullまたはその他の値を返すことはできません。
0
gettersおよびsettersメソッドを使用して、パラメータの値を設定し、値が無効な場合は例外をスローするか、オブジェクトを作成できないというメッセージボックスを表示します。このサイモン
7
同様
UPDATE
public class A {
private String Name;
public void SetName(String name) {
if (name.equals(null) || name.equals(""))
throw new IllegalArgumentException("name can not be null or empty");
}
public A(String name) {
SetName(name);
}
}
に渡されたパラメータが無効である場合は、わかりやすいメッセージでIllegalArgumentException
をスローする必要があります。無効なnull
値の場合はNullPointerException
を投げるべきです。
エンジンが4000 CC以上であることが必要なBigCar
クラスの例を次に示します。
public class BigCar {
private final Engine engine;
public BigCar(Engine engine) {
if (engine == null)
throw new NullPointerException("Must provide an engine to our car");
if (engine.getCC() <= 4000)
throw new IllegalArgumentException(
"Engine should be bigger than 4000 CC");
this.engine = engine;
}
public static void main(String... args) {
// Size of engine is 2000CC
Engine engine = new Engine(2000);
BigCar myBigCar = new BigCar(engine); // Exception; Engine should be
// bigger than 4000 CC
}
}
関連する問題
- 1. 建設中にこれをダウンキャストしていますか?
- 2. iCalがPHPで生成されたiCalendarフィードをキャッシュするのを止めることはできますか?
- 3. これはキャストか建設ですか?
- 4. Python OOPで別のオブジェクト作成をスキップして、クラス関数が呼び出されたときにオブジェクトを作成することはできますか?
- 5. vimが.swpスワップファイルを作成するのを止めることはできますか?
- 6. は、だから私は7つの建物オブジェクトを作成し、型建物のArrayListに追加します建物と呼ばれるクラスをクラス
- 7. オブジェクトはどこにJavaで作成されるのですか
- 8. 自分の活動中にアンドロイドがアップデートを実行するのを止めることはできますか?
- 9. 同期XmlHttpRequestを中止することはできますか?
- 10. do-whileが再び開始されるとオブジェクトが削除されます。どうすればそれを止めることができますか?
- 11. wpfウェブブラウザのポップアップを止めることができますか?
- 12. 2つのオブジェクトを別々に作成するトリックは、同じオブジェクトにすることができますか?
- 13. どのようにして、この動的に作成された3Dオブジェクトを親の中心に置くことができますか?ここで
- 14. javascriptのオブジェクトに動的キーを作成することはできますか?
- 15. Chromeがグローバルプロパティを食べるのを止めることはできますか?
- 16. 生成されたフラットバッファヘッダーにメタデータを含めることはできますか?
- 17. C++でファイルを作成するとき、作成されたファイルはどこに保存されますか?
- 18. のVim/Emacsがルートへのバックアップの作成を中止することができません
- 19. Swift:中断されたときにscheduleBuffer補完ハンドラが呼び出されるのを止めるには?
- 20. オブジェクトが2ビットしか占めないコンテナを作成することはできますか?
- 21. どのように私はユーザーがユーザーのためだけに作成されたときに新しいフォルダを作成することができます
- 22. クローズテンプレート内にオブジェクトを作成することはできますか?
- 23. VS2010マクロでテキストを設定すると、操作が中止されました(HRESULTからの例外:0x80004004 E_ABORT)
- 24. プロジェクトのplist(xcode)に外部から作成されたXMLファイルを含めることはできますか?
- 25. 新しいAJAXコールが作成されたときに、以前のAJAXコールを中止しますか?
- 26. TeamCityが閲覧またはコメントされたときにプルリクエストを作成することを停止するにはどうすればよいですか?
- 27. エラースタック上にオブジェクトを作成することはできませんが、ヒープ上にのみ作成できるクラスを作成する際には、
- 28. 非中心のJavascriptアラートボックスを作成することはできますか?
- 29. 廃止された自作式をアンインストールすることができません
- 30. Javaのインタフェースのオブジェクトを作成することはできますか?
オブジェクトを作成するとは言いませんでした..... – MStp
作成されていないオブジェクトでセッターメソッドをどのように呼び出すのですか? – SimonC
パブリッククラスA { \tプライベート文字列名; \t公共ボイドSetNameメソッド(文字列名){ \t \t場合(name.equals(ヌル)|| name.equals( "")) \t \t \tスロー新しい例外:IllegalArgumentException( "名前" がnullまたは空にすることはできません) ; \t} \t公共A(文字列名){ \t \t SetNameメソッド(名前); \t} } – MStp