問題タブ [private-constructor]
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 - ファクトリ メソッドにプライベート コンストラクタを使用していますか?
不変の Yahtzee スコアカード クラスを構築しているとします。
基本的に、クラスの内部を公開したくありません。プライベート コンストラクターがない場合は、スコアリングを可能にするために、プライベート コンストラクターと同じように引数を指定してパブリック コンストラクターを使用する必要があります(また、本質的にメソッドもMap
失われる可能性があります)。withScore()
しかし、これはファクトリメソッドを実行する有効な方法ですか?
c++ - C++ のプライベート コンストラクター
私は C++ が初めてで、以下のように LinkedListIterator ユーティリティ クラスを使用して LinkedList クラスを作成しようとしています。(質問に関連するコード部分のみをリストしました)。LinkedListIterator コンストラクターをプライベートとして作成しました。
さて、main() にこれらの 2 行があると、
デフォルトのコンストラクターがプライベートであるため、2行目のコンパイルエラーが発生します。しかし、最初の行にコンパイルエラーがない理由がわかりませんか? なんで ?コードの最初の行で何が呼び出されていますか? プライベート コンストラクターまたはコピー コンストラクターまたは代入演算子 ?
コード
java - 値のないJava列挙型とプライベートコンストラクターを持つユーティリティクラスの違い
ユーティリティ クラスに対して行う一般的なことは、それらにプライベート コンストラクターを与えることです。
しかし残念なことに、一部のツールはそのプライベート コンストラクターを好みません。クラス内で呼び出されたことがない、テストでカバーされていない、ブロックにコメントが含まれていないなどの警告が表示される場合があります。
代わりにこれを行うと、これらの警告の多くが消えます。
私の質問は次のとおりです。将来の開発者に対する果てしない憎しみ以外に、値のない列挙型と Java のプライベート コンストラクターを持つクラスとの間には、どのような重要な違いがありますか?
私は尋ねていないことに注意してくださいJava列挙型とパブリック静的最終フィールドを持つクラスの利点は何ですか? . もののリストが定数の束であるか列挙型であるかを決定しているのではなく、コンストラクターのないクラスまたは値のない列挙型に関数の束を配置することを決定しています。
また、私は実際にこれをやりたくないことに注意してください。一般的な言語知識の一部としてトレードオフを知りたいだけです。
たとえば、列挙型を使用すると、 のような役に立たないメソッドでオートコンプリートが汚染されUtilClass.values()
ます。他にどのような欠点がありますか?長所?
java - システムクラスが最終として宣言され、プライベートコンストラクターを使用するのはなぜですか?
私の理解によると
最終クラス
最終クラスは、単に拡張できないクラスです。
単一の引数のないプライベート コンストラクターを持つクラス
プライベート コンストラクターを持つクラスは、同じクラス内のフォームを除いてインスタンス化できません。これにより、別のクラスから拡張しても意味がありません。ただし、サブクラス化できないという意味ではありません。内部クラス間で、プライベート コンストラクターを拡張して呼び出すことができます。
したがって、私の理解では、単一の引数なしのプライベートコンストラクターでクラスを作成した場合、そのクラスを final として宣言する意味はありません。では、引数のない単一のプライベートコンストラクターがあるのに、なぜJavaのシステムクラスが最終クラスとして宣言されているのでしょうか?
class finalを作成するとパフォーマンスが向上すると聞きました。これは正しいですか、これが System クラスを final として宣言する唯一の理由ですか? Java が System クラスをこのように実装した理由を明確にしてください。
c++ - デフォルトの定義の形式が正しくないため、コピーコンストラクターは暗黙的に削除されます
プライベート コピーコンストラクターA
とclone
メソッド、および. にも実装したいと思います。B
A
clone
B
素朴なアプローチ
ただし、のコピー コンストラクターA
がプライベートであるため、失敗します。
A::clone()
forを利用する方法があるかもしれませんが、B::clone()
これが正確にどのように機能するかはわかりません。ヒントはありますか?
c# - Json.NET - 内部コンストラクターで外部クラスをシリアル化する方法は?
ソースコードを変更できないクラスをシリアル化する必要があり(これを事実として)、それは別のアセンブリからのものです。コンストラクターは 1 つしかありません
JsonConvert.SerializeObject(object)
このため、もちろん失敗します。Json.NET を使用して、コードやタグを追加することなく、このクラスをシリアル化する方法があるのだろうか。