問題タブ [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 投票する
3 に答える
7025 参照

java - 一連のアニメーションを実行するにはどうすればよいですか?AnimationSetは私を失敗させています

カスタムビューがありますDialDialAnimationこのビューには、のネストされたクラスとして記述されたカスタムアニメーションがありDialます。Activity以下は、一連のアニメーションをインスタンス化Dialして実行しようとする私のコードです。コードを実行すると、アニメーションの1つだけが画面に表示されます。ここで何が欠けていますか?

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

c++ - public ネストされたクラスの一部をネストしたクラスだけに見えるようにする

公開する必要があるC ++のネストされたクラスがあります。しかし、そのメソッドの一部を外界から見えるようにし、残りのメソッドを入れ子クラスだけから見えるようにする必要があります。あれは:

innerMethod() を使用する set のメソッドを記述できるようにしたいと考えています。公開すると外部からもアクセスできてしまうので、これは絶対に嫌です。「フレンドクラス設定」をせずにやる方法はありますか?

前もって感謝します!

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

c# - クラスメンバーの名前をネストされたクラスの1つと同じにできないのはなぜですか?

または、次のことが不可能なのはなぜですか。

あいまいさの可能性はありません。インスタンスからアクセスする場合は、プロパティを返します。静的にアクセスする場合は、クラスを返します。それとも私は何かが足りないのですか?

私は「修正」を求めているのではありませんが(MaterialKeysなどのように別の名前を付けることができることはわかっています)、この制限の背後にある技術的な理由があります。

0 投票する
2 に答える
230 参照

java - Swing クラスにネストされたクラスが多すぎる

ネストされたクラスはネストされたクラスの変数を使用できるため、これらのネストされたクラスを使用する必要がありました。これらのクラスを something.java に移動してコードを簡素化し、クラスが Jlabel などの gui クラスの制御を維持するにはどうすればよいですか?

これは、重要な部分を示すためのクリーン バージョンです。

0 投票する
2 に答える
1960 参照

c++ - ネストされたクラスを含む

ネストされたクラスとしていくつかのイテレータを持つコンテナクラスがあります。構造はこれに似たものです:

ここで、コンテナーコードをクリーンアップするために、イテレーターを独自のヘッダーファイルに移動したいと思いました。

これまでのところ、これはエラーなしでコンパイルされます。だが:

QtCreatorの行

エラーとしてマークされ、「グリッドはタイプ名ではありません」と表示されます。

griditerator.hファイルの前方宣言でそれを解決できると思いました。

しかし、それは私にコンパイルエラーを与えます:クラスグリッドはそれが宣言されているクラスと同じ名前を持っています。

前方宣言を#include"grid.h"に置き換えると機能します。しかし、私はどういうわけかそれは醜いと思います。

したがって、2つの作業オプションがあります。1つは私のIDEで醜いエラーを示し、もう1つはあまり好きではありません。

インクルードが囲んでいるクラス内にない他のバリエーションを試しましたが、さまざまな理由でコンパイルできませんでした。

だから私の質問は:「ベストプラクティス」や、それを囲むクラスファイル内に保持するには大きすぎるネストされたクラスを処理するためのパターンを含めることはありますか?

たとえば、次のようなネストされたクラスを宣言する方法があります。

0 投票する
2 に答える
3015 参照

java - Java: static ネストされたクラスとリフレクション: "$" vs "."

以下のコードのようなクラスがある場合、引数として返されるのに必要なのcom.example.test.Enum2.Testはなぜですか?getCanonicalName()com.example.test.Enum2.TestClass.forName()"com.example.test.Enum2$Test"

列挙型がネストされたクラスである場合、それぞれの可能性$をチェックすることなく、その名前で列挙型の値をシリアル化/逆シリアル化できるように、一貫性を保つ方法はありますか?.


明確化:実際のアプリケーションでこの問題を処理する良い方法を探しています (上記の不自然なテスト ケースだけではありません)。

a. getCanonicalName()の出力 (ドット付きの名前のみ)を使用してシリアライズ/デシリアライズし、Class.forName()各可能性を順番"com.example.test.Enum2.Test"に試し"com.example.test.Enum2$Test"ます"com.example.test$Enum2$Test"

b. 適切な $ 表記を使用してClass.forName()、最初から正しく機能するようにします。しかし、これには、と一致する文字列を生成する getCanonicalName() の代替を実装する必要がありますClass.forName()

私はアプローチ (b) に傾いています。これは、一部は直感からであり、部分的には大文字のパッケージ名がある場合にアプローチ (a) があいまいであるためです: com.example.Test.Enum2 と com.example.Test$Enum2 の両方が可能です。Class.forName()com/example/Test/Enum2.java と、Enum2 内部クラスを含む com/example/Test.java がある場合の有効な入力。

...しかし、私はそれを実装する方法がわかりません。何か案は?

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

ruby-on-rails - ネストされたクラスのRuby定数。メタプログラミング

Q:親クラスに関するネストされたクラスの情報を共有する方法

この例(実際のシステムははるかに複雑です)のこのような設計の理由は、「モジュールを含める」だけで任意のモデルにコメントを追加することです。これにより、コントローラー、ビュー、モデルメソッドが追加されます

コメントの動作は、すべてのモデルで同様です。ただし、何かを調整する必要がある場合、モデルはCommentクラスのメソッドをオーバーライドできます。

これのトリッキーな部分は、モジュールがトップクラス(Post)と同じレベルのクラス(Comment and Another)について何も知らないということですが、それらのモジュールでいくつかのクラスメソッドを呼び出す必要があります。

現在、class.name解析を使用して、最上位クラスのクラス名を取得していますが、別の方法があるはずです。

デザインの変更など、どんな提案でも大歓迎です。

アップデート

投稿とコメントはほんの一例です。私のプロジェクトにはこのモデルはありません。

アンダースコアなし(またはCamelCase)からネストされたクラス(ArticleTranslationからArticle :: Translation)に移行しています。それは私にはもっとはっきりしているように見えます。以前のバージョンでは、モデル名を使用してクラスのクラスメソッドを呼び出していました(ModelTranslationなど)。これで、libモジュールをリファクタリングした後、model_nameを知る必要がなくなりました。

しかし、私は罠に陥りました。ルビーでは、次のようなクラスを再開できます。

そして私は問題を抱えています:サーバーの起動直後にページがロードされた場合-すべてOKですが、そのページへの次の呼び出しはエラーをスローします:そのような関連付けはありません。含まれているモジュールメソッドの呼び出し-メソッドエラーはありません。railsがPost::Comentに対して間違ったファイルをロードすると思いますが、最悪の場合、このエラーをデバッグできません...しかし、これは別の質問です。

UPDATE2

2番目の問題は解決しました。問題はヘルパークラスにありました。

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

java - 「静的キーワードは、変数またはメソッド宣言に対して行うことをクラス宣言に対して行いません。」

出典: JavaWorld

ネストされたクラスでのみ使用できることを理解staticしています。これにより、それらはトップレベルクラスと同等になります。また、これにより、外側のクラスとは独立して宣言できることも理解しています。

  1. それが理論ですが、なぜこれを行う必要があるのか​​について、良い実用的な例を誰か思いつくことができますか? (リンクの例は、AFAIKの内部クラスの例である可能性があります)。

  2. また - 質問の背後にある理由 - なぜあいまいな名前を持っているのですか? なぜ単語を「再利用」しstaticて別の意味合いを与えるのですか?

0 投票する
2 に答える
2025 参照

c++ - C++ プライベート ネストされた抽象クラス

これはばかげた質問かもしれませんが、私はこれを考えすぎていますが、次のような状況があります。抽象的な「クラス アクション」オブジェクトを実行できる「クラス シェル」を作成しています。これらのオブジェクトを作成または使用する必要がある唯一のクラスです。アクション オブジェクトは、特定のアクションを実行するためにシェルにアクセスする必要がありますが、このためにパブリック インターフェイスを追加することは避けようとしています (他の誰もそれを許可されるべきではありません)。

私はもともとシンプルでした(それほどエレガントではありません)

そこで、ネストされたクラス Action を検討しましたが、それを非公開にしたかったのです (シェル以外の具体的な Action を作成できるようにするのはなぜでしょうか?)

しかしもちろん、これ以上 Action から継承することはできません (これは理にかなっており、非公開です)。だからうまくいかない。

私の質問は、最初の方法と友情、またはパブリックインターフェイスを使用する必要がありますか? アクションおよびシェルとの関係を維持するために、2 番目の方法に似た方法を使用できますか? もっと良いアイデアはありますか?

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

c++ - C ++の内部クラスは自動的に友達になりますか?

C ++で内部クラスを定義した場合、それは自動的にそれを含むクラスのフレンドになりますか?たとえば、これは合法ですか?

私が試した一部のコンパイラ(VS2003)ではこのコードが機能しないため、質問しますが、少なくとも逸話的に、一部のコンパイラでは機能すると聞いています。私はこれについてC++仕様に関連するセクションを見つけることができません、そして誰かがそれが合法であるか合法でないかを言うであろう特定の何かを引用することができればそれは素晴らしいでしょう。