問題タブ [inner-classes]
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 - 内部クラスがプライベート メソッドにアクセスできるようにするのはなぜですか?
これがコンパイルされる理由がわかりません。f() と g() は非公開ですが、内部クラスから見えます。それらは内部クラスであるため、特別に扱われますか?
A と B が静的クラスでない場合でも、同じです。
java - Javaの匿名内部クラスがスコープを「失う」方法はありますか?
匿名内部クラスを関数に渡すと、次のように、そのクラスのメソッド内から現在のスコープ内の変数を参照できます。
さて、上記の someMethod が実行された後、Caller と小さな anons を持つキューは別々の道を進むことができます。私が理解している限り、JVM はすべての参照をまっすぐに保ち、これが常に機能するようにします。
しかし、たとえば、キューがシリアル化され、プログラムがシャットダウンされて再起動された後、キューが逆シリアル化され、その中のアイテムが実行され、Caller インスタンスがなくなって忘れ去られた場合はどうなるでしょうか?
また、anon クラス内の呼び出しが機能しなくなる方法で、周囲のオブジェクトと匿名の内部クラスを分離する他の方法はありますか?
class - 静的内部クラスは良いアイデアですか、それとも設計が悪いですか?
「ヘルパー」クラスを拡張するパブリック静的内部クラスを設計することで、コードがよりタイプセーフになり、私の意見では読みやすくなる場所がいくつかあることがわかりました。たとえば、「SearchCriteria」クラスがあるとします。私が検索するさまざまなものには多くの共通点があります (検索語と検索語の種類のグループ、日付範囲など)。これを静的な内部クラスで拡張することにより、拡張機能と検索可能なものを緊密に結合します。特定の違いがあるクラス。これは理論的には悪い考えのように思えますが (密結合が悪い!)、拡張はこの検索可能なクラス (1 つのクラス、1 つの目的) に固有のものです。
私の質問は、あなたの経験では、静的内部クラス (またはあなたの言語に相当するもの) を使用することで、コードが読みやすく/保守しやすくなりましたか、それとも EOF で噛まれてしまいましたか?
また、これがコミュニティ wiki の資料であるかどうかもわかりません。
c# - パラメータ オブジェクトの通常のクラスまたは内部クラスを作成しますか?
メソッドに多くの引数を渡す代わりに、引数オブジェクトにカプセル化していました。
注:デモ用に簡略化
このような場合、より良いプラクティスは何でしょうか?
• クラスを作成し、?という名前を付けます。 -- または -- • 入れ子になったクラスを作成し、?という名前を付けます。
InventorySaveArgs
SaveArgs
また、どちらか一方を選択する理由についても説明していただけますか?
[編集] : その引数の型は、別のアセンブリでも使用されます。
副次的な質問: 複数のパラメーターを単一のオブジェクトにカプセル化するためのパターン名が偶然に存在するかどうか、ちょっと興味があります。
[UPDATE] : MSDNでネストされた型の使用に関するガイドラインが見つかりました
InventorySaveArgs
。別のアセンブリから入手できるはずなので、通常のクラスを使用します。
java - 内部クラスのインスタンス化
ユーティリティ メソッドがあり、そこから無関係なロジックを削除すると、簡略化されたメソッドは次のようになります。
問題は、 がclazz
などの内部クラスである場合Foo.Bar.class
、newInstance()
メソッドがBar
public であっても をスローするため、メソッドが機能しないことjava.lang.InstantiationException
です。
内部クラスを動的にインスタンス化する方法はありますか?
java - maven2 でネストされたテスト クラスを削除する
JUnit テストでプライベート メンバーにアクセスするために、ネストされたクラスを使用します。それらは常に「TestProxy」という名前です。
ビルド時にmaven2を使用してそれらを削除し、jarファイルに含めないようにしたいと思います。
- 設定オプションはありますか?
- プラグインでできる?もしそうなら、プロトタイプはいいですね!;-)
ありがとう
編集: なぜプライベート メソッドを使用するのですか? サードパーティのシステムからデータを注入する必要がありますが、JUnit テストの実行ごとに呼び出すことはできません。そして、プライベート データのパブリック セッターは本当に必要ありません。そうしないと、遅かれ早かれ別のプログラマーがそれを悪用する可能性があります。
java - Javaで匿名の内部クラスを静的にすることは可能ですか?
Java では、ネストされたクラスはどちらでもかまいstatic
ません。それらが である場合static
、それらはそれを含むインスタンスのポインタへの参照を含みません (それらはもはや内部クラスとも呼ばれず、ネストされたクラスと呼ばれます)。
static
参照が必要ないときにネストされたクラスを作成するのを忘れると、ガベージ コレクションやエスケープ解析で問題が発生する可能性があります。
匿名の内部クラスstatic
も作成できますか? それとも、コンパイラはこれを自動的に把握しますか (サブクラスが存在できないため、可能でした)?
たとえば、匿名のコンパレータを作成すると、外部への参照はほとんど必要ありません。
java - Java - ローカル クラスとジェネリック、なぜコンパイラの警告が表示されるのですか?
名前付きローカル クラスはめったに使用されません。通常、ローカル クラスは匿名です。以下のコードがコンパイラの警告を生成する理由を知っている人はいますか?
警告がありnew InIterator()
、それは言う
変更されていないクラスが匿名にされるか、メンバーにされると、警告は消えます。ただし、名前付きローカル クラスであるclass InIterator<E> implements ...
ため、警告を消すには宣言が必要です。
どうしたの?
c# - C# で内部クラスを使用する
C# での内部クラスの使用と構造に関するベスト プラクティスは何ですか。
たとえば、非常に大きな基本クラスと 2 つの大きな内部クラスがある場合、それらを別々の (部分クラス) コードファイルに分割するか、1 つの非常に大きく扱いにくいコードファイルのままにしておく必要がありますか?
また、パブリック継承された内部クラスを持つ抽象クラスを持つことは悪い習慣ですか?
java - (非静的) 内部クラス (Java 16 より前) に静的メソッドを使用できないのはなぜですか?
非静的内部クラスで静的メソッドを使用できないのはなぜですか?
内部クラスを静的にすると機能します。なんで?
Java 16+ では、これらの両方が有効です。