問題タブ [nested-class]

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.

0 投票する
7 に答える
286 参照

c# - コレクション クラスはどこに配置しますか?

このための命名法がすでにあるかどうかはわかりませんが、この質問のために、ピア実装またはネストされた実装という 2 つの用語を定義して、多くの親子エンティティ関係を含むデータ モデルにコレクション クラスを実装する方法を説明します。

ピアという用語を使用して、エンティティ クラスと一緒にモデル レイヤーにコレクション クラスを実装し、基本的に API でそれらをピアにするシナリオを説明します。

ここでの主な利点は、たまたま同じ型の子を格納している他のエンティティ クラスでコレクション クラスを再利用できることです。

ネストされたという用語を使用して、次のようにネストされたクラスとして実装するシナリオを説明します。

ここでの主な利点は、各親が独自のコレクション クラスを実装して、その特定の親に最も最適化された方法で子を格納できることです。たとえば、ある親エンティティは配列データ構造が適切に機能することを発見し、別の親エンティティはスプレイ ツリーを使用する場合があります (よくわかりませんが、私の要点をよく示しています)。

Microsoft がさまざまな .NET 関連のフレームワークで両方のイディオムを使用していることに気付きました。System.Windows.Forms 名前空間は、入れ子になった実装に大きく依存しているようです。より多くの作業が必要ですが、私もこの方法を好む傾向があります。

推奨事項、コメント、代替案はありますか?

0 投票する
7 に答える
24162 参照

c# - ネストされたクラスメンバーへのアクセスを囲んでいるクラスに制限する方法は?

ネストされたクラスのメンバーは、それを囲むクラスからはアクセスできるが、他のクラスからはアクセスできないように指定することはできますか?

これが問題の図です(もちろん、私の実際のコードはもう少し複雑です...):

クライアント コードが のインスタンスを作成できないようにしたいのですが、作成できる必要がありますJournalEntryJournalコンストラクターをパブリックにすると、誰でもインスタンスを作成できます...しかし、プライベートにJournalするとできなくなります!

JournalEntry既存のエントリをクライアント コードに公開できるようにするため、クラスはパブリックである必要があることに注意してください。

任意の提案をいただければ幸いです!


更新: ご意見をお寄せいただきありがとうございます。私は最終的にIJournalEntry、プライベート クラスによって実装されたパブリック インターフェイスを選択しましたJournalEntry(私の質問の最後の要件にもかかわらず...)。

0 投票する
4 に答える
5656 参照

c# - ネストされたC#クラス-内部から外部メソッドを呼び出す

GamePlayというViewControllerクラスがあります。GamePlayには、MyPinAnnotationViewというネストされたクラスがあります。MyPinAnnotationのメソッドTouchesBegan()が呼び出されたら、親のGamePlayからメソッドCheckAnswer()を呼び出したいと思います。

変数とインスタンスがすでに設定されているため、新しいGamePlayインスタンスを作成したくありません。何らかの方法で親にアクセスできますか?(イベントリスナー以外)

0 投票する
3 に答える
1536 参照

c++ - テンプレート継承のためのネストされたクラス前方宣言

テンプレート引数が継承クラス内のネストされたクラスであるテンプレートクラスから継承する適切な方法は何ですか?

0 投票する
3 に答える
5394 参照

c++ - テンプレート、ネストされたクラス、および「'&' トークンの前にコンストラクタ、デストラクタ、または変換が必要」

いくつかのテンプレートを操作し、反復子を使用して基本的なコンテナー クラスを作成しているときに、スタイル ガイドラインに準拠するために、メンバー関数の本体をテンプレート クラスから別のファイルに移動する必要があることに気付きました。ただし、興味深いコンパイル エラーが発生しました。

runtimearray.cpp:17: エラー: '&' トークンの前にコンストラクタ、デストラクタ、または型変換が必要です runtimearray.cpp:24: エラー: '&' トークンの前にコンストラクタ、デストラクタ、または型変換が必要です runtimearray.cpp:32: エラー: '&' トークンの前にコンストラクタ、デストラクタ、または型変換が必要です runtimearray.cpp:39: エラー: '&' トークンの前にコンストラクタ、デストラクタ、または型変換が必要です runtimearray.cpp:85: エラー: コンストラクタ、デストラクタ、または型変換が必要です'RuntimeArray' の前に runtimearray.cpp:91: エラー: 'RuntimeArray' の前にコンストラクタ、デストラクタ、または型変換が必要です

ランタイム配列.h:

ランタイム配列.cpp:

これらのエラーをなくすにはどうすればよいですか? ファイルは私には理にかなっていますが、残念ながら、重要なのはコンパイラの発言です。

0 投票する
1 に答える
3246 参照

java - 内部クラスのインスタンスから外部クラス属性にアクセスする

次のコードが与えられます:

Innerクラスの2つのインスタンスのnの値を比較できるように、擬似コード行と何を交換できますか?

明らかな解決策()を試してn != that.nもコンパイルされません:

0 投票する
6 に答える
38496 参照

java - インターフェイスの内部クラスとクラスの内部クラス

これら 2 つの内部クラス宣言の違いは何ですか? また、長所/短所についてコメントしますか?

ケース A: クラス内のクラス。

ケース B: インターフェイス内のクラス。

修正: getvalue メソッドの配置。

詳細情報: インターフェイス AT ALL を実装していない別のクラスで、ケース A と B の両方で Items クラスをインスタンス化できます。

インターフェースはインスタンス化されていないため、インターフェースをインスタンス化できないという理由だけでインスタンス化された LEVELS インターフェースなしで、インターフェース内のすべての要素にドット表記でアクセスできます。事実上、インターフェース内で定義されたクラスを静的参照に対して透過的にします。

したがって、 B が静的でない場合の Items クラスと言っても意味がありません。A と B の両方のケースが同じ方法でインスタンス化されるため、静的、内部、またはネストされたものに関するセマンティクスを探しているわけではありません。セマンティクスに関する回答はやめてください。コンパイラ、ランタイム、および動作の違い/利点が必要です。ない場合は、そう言います。セマンティクスに関するこれ以上の回答はありません!!!!! JVM または .NET VM 仕様内部の専門家は、教科書の意味論者ではなく、この質問に答えてください。

0 投票する
4 に答える
1869 参照

c# - ネストされたシングルトン クラス

C# で非シングルトン クラス内にシングルトン クラスをネストすることは可能ですか? もしそうなら、この場合、シングルトンのライフサイクルに制限はありますか?

私のアプリケーションの設計では、これは理にかなっていますが、実際にこれを実装する前に、潜在的な落とし穴を知る必要があります。

編集: 具体的には、タイマーに基づいてタスクを実行するジョブ ホストがあります。このNonSingletonClass場合の は、タスクのインスタンス化です。はSingletonClass、 によって使用されるデータのリポジトリですが、 のNonSingletonClass外部から変更できますNonSingletonClassSingletonClass複数のNonSingletonClassインスタンスがある場合でも、それらすべてに対して命令とデータのセットが 1 つだけであることを保証するために存在します。

0 投票する
1 に答える
310 参照

java - インターフェイス、静的内部クラス、およびベスト プラクティス

したがって、これは多かれ少なかれコーディング スタイルの問題です。ここでは Bean Validation を使用していますが、アイデアは、それほど頻繁に変更される可能性が低い単純な実装を持つインターフェイスでも同じです。

したがって、PhoneNumberValidator はこの特定のバリデーター (またはプロデューサー メソッドまたはインターセプターなど) の実装であり、実装を頻繁に変更する可能性はあまりありません。

これは、実装とインターフェイスを近くに配置することでコードにまとまりを与える良い方法ですか、それとも、結合してはならない 2 つのコードを密結合しているコードのにおいですか?

このようなことを行うプロジェクトに参加したことがありますか? もしそうなら、それは物事を良くしましたか、それとも悪くしましたか? そうでない場合、この慣行は混乱を招くと思いますか?

コミュニティ Wiki は、意見を求めているためです。

0 投票する
5 に答える
1989 参照

java - Java:静的なネストされたクラスを返す

静的にネストされたクラスがあり、静的アクセサー(ゲッター)を介して返したいと思います。

Columnsはクラスであり、変数ではないため、これが機能しない理由はわかっていますが、他の理由で、列を静的クラスとして保持する必要があります。これが実行可能かどうかさえわかりませんが、あったかどうか尋ねたいだけですか?

ありがとう!