問題タブ [object-construction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 多くのフィールドを持つクラスをエレガントな方法で初期化するにはどうすればよいですか?
私のアプリケーションでは、さまざまな種類のオブジェクトをインスタンス化する必要があります。各タイプにはいくつかのフィールドが含まれており、含まれているタイプに追加する必要があります。どうすればエレガントな方法でこれを行うことができますか?
現在の初期化手順は次のようになります。
このようなコードを書くのは本当に避けたいです。なぜなら、各オブジェクトを個別にインスタンス化してから、複数行のコードで各フィールドを初期化する必要があるためです (たとえば、new Offer()
and thensetHotelOnly(hotelOnly)
と thenを呼び出す必要があるadd(offer)
)。
私が持っているものの代わりに、どのエレガントな方法を使用できますか? 使える「Factories
」はありますか?このようなコードを書くことを避けるための参照/例はありますか?
きれいなコードを実装することに本当に興味があります。
環境:
RestClient
投稿リクエストをWebサービスに送信するためのアプリケーションを開発しています。
API はxsd schema
ファイルとして表され、すべてのオブジェクトをJAXB
リクエストを送信する前に、相互に依存関係があるため、多くのオブジェクトをインスタンス化する必要があります。 (オファーにはホテルがあり、ホテルには部屋があり、部屋には人がいます...そして、これらのクラスは生成されたものです)
ご協力いただきありがとうございます。
c++ - コンテナで新しいプレースメントを使用する
C++ でのコンテナーの実装に出くわしました。そのクラスは、内部バッファを使用してそのオブジェクトを管理します。これは、安全チェックなしの簡易バージョンです。
私の知る限り、 /がカスタマイズされていない場合、これはE
オブジェクトを重複してContainer()
構築/破棄します。これは危険なようです。~Container()
new
delete
危険な冗長なコンストラクタ/デストラクタの呼び出しを防ぐための最良の方法で配置new
を使用しAdd()
ていますか (クラスを完全な機能のプールにバインドすることは別として)?
配置を使用する場合new
、new char[sizeof(E)*100]
バッファを割り当てる正しい方法はありますか?
c++ - C++ でのオブジェクトの作成と破棄の順序
C++ でオブジェクトを作成および破棄する順序について詳しく学習するための簡単なプログラムを作成しました (Visual Studio 2015 を使用)。ここにあります:
出力は私を少し驚かせました(a1
s):
何が起こっているのかをもっと知るために、オブジェクトのインスタンスに関する情報を追加しました:
結果はさらに驚くべきものでした:
つまり、なぜa1
のコンストラクターは1 回だけ呼び出され、デストラクタは3 回呼び出されるのでしょうか。私はa
値渡しをしているので、明らかに少なくとも 1 つの一時オブジェクトが作成されますが、いつ、いくつの A
インスタンスが作成および破棄されるのか説明してください。
c++ - 2 つのオブジェクトが 1 行で宣言されている場合、それらはどの順序で構築されますか?
クラスが次のように定義されているとしましょう
そして今、私は2つのオブジェクトを作成しています
どのような順序a
でb
作成されますか? 標準で定義されていますか?
c++ - 関数呼び出し内のスタック オブジェクトはいつ構築されますか?
私は単純な関数を持っているとしましょう:
で関数を呼び出した場合val == 0
、stringstream オブジェクト ss は構築されますか? いいえと思いますが、確認したいだけです。
java - 使用前に最終変数の必要性を初期化する本当の理由は何ですか
そんなこと知ってる:
空白の final クラス変数は、それが宣言されているクラスの静的初期化子によって確実に割り当てられる必要があります。そうしないと、コンパイル時エラーが発生します。
空白の final インスタンス変数は、それが宣言されているクラスのすべてのコンストラクターの最後に確実に割り当てる必要があります。そうしないと、コンパイル時エラーが発生します。
宣言時だけでなく、いつでも一度だけ最終変数を割り当てることができないのはなぜですか?