問題タブ [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.

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

c# - C# の Java 内部クラス

次の Java コードがあります。

これにより、666 と 999 が得られます。ここで、c# で同様のコードをセットアップしようとしましたが、同じことを達成することはできないようです。その場合、C# でプログラミングするときに、通常どのように同様の効果を達成しますか?

0 投票する
13 に答える
87426 参照

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

インターフェイス内に内部クラスを作成することは可能ですか?
可能であれば、インターフェイスオブジェクトを作成しないので、なぜそのような内部クラスを作成したいのでしょうか。

これらの内部クラスは、開発プロセスに役立ちますか?

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

java - 合成法の意義は何ですか?

問題

ある友人が興味深い問題を提案しました。次のコードがあるとします。

外部クラスから、message変数の内容を出力するにはどうすればよいですか? もちろん、メソッドやフィールドのアクセシビリティを変更することは許可されていません

(ソースはこちら、フランスのブログです)


解決

この問題を解決するコードは次のとおりです。

メソッド名は実際には標準的ではないことに注意してくださいaccess$000(この形式が強く推奨される形式であっても)、一部の JVM はこのメソッドに名前を付けますaccess$0。したがって、より良い解決策は、合成メソッドを確認することです。


したがって、この問題の興味深い点は、合成法の使用を強調することです。これらのメソッドを使用すると、ソリューションで行ったようにプライベート フィールドにアクセスできます。もちろん、リフレクションを使う必要がありますし、こういう使い方はかなり危険だと思いますが…

質問

開発者としての私にとって、合成メソッドの関心は何ですか? 合成繊維の使用が役立つ場合、どのような状況が考えられますか?

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

java - 静的なfinalメンバーを持つことができるのに、内部クラスに静的メソッドを持つことができないのはなぜですか?

静的なfinalメンバーを持つことができるのに、非静的な内部クラスに静的メソッドを持つことができないのはなぜですか?

内部クラスをインスタンス化せずに、外部クラスの外部の内部クラスの静的最終メンバー変数にアクセスできますか?

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

java - なぜ私の内部クラスは非静的変数を見るのですか?

以前、内部の匿名クラスが「外部」クラスのフィールドを認識していなかったときに問題が発生しました。内部クラスに表示されるように、final変数を作成する必要がありました。今、私は反対の状況にあります。「outer」クラス「ClientListener」では、内部クラス「Thread」を使用し、「Thread」クラスには「run」メソッドがあり、「outer」クラスの「earPort」が表示されます。なんで?

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

java - 囲まれたメンバークラスからシャドウフィールドにアクセスする (Java)

Javaで囲まれたクラスから囲んでいるクラスのシャドーフィールドにアクセスすることは可能ですか?

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

java - 内部クラスを使用しない Json Jackson の逆シリアル化

Jackson を使用した Json デシリアライズについて質問があります。次のようなクラスを使用してJsonファイルを逆シリアル化したいと思います:( http://wiki.fasterxml.com/JacksonInFiveMinutesから取得)

Json ファイルは、いわゆる「フル データ バインディング」を使用して、次のように逆シリアル化できます。

私の問題は、内部クラス「名前」の使用です。内部クラスを使用せずに同じことをしたいと思います。「ユーザー」クラスは次のようになります。

これは、逆シリアル化を実行するために必要なすべてのクラスをマッパーに指定する方法を見つけることを意味します。

これは可能ですか?ドキュメントを見ましたが、解決策が見つかりません。

私が必要としているのは、Javassist ライブラリを使用してそのようなクラスを作成し、内部クラスまたは匿名クラスをサポートしていないという事実から来ています。

前もって感謝します

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

java - 範囲を拡張するジェネリック内部クラスの継承でのコンパイル エラー

内部クラスを持つジェネリック クラスをコンパイルするときに問題が発生します。クラスはジェネリック クラスを拡張し、内部クラスも拡張します。

ここで実装されたインターフェース:

汎用スーパークラス:

コンパイラ エラーのあるジェネリック サブクラス:

エラーは次のとおりです。

なにが問題ですか?コードはEclipseでコンパイルされますが、Java 5コンパイラではコンパイルされません(MacとEclipse 3.5でJava 5でantを使用します)。いいえ、静的内部クラスに変換できません。

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

scala - Scalaでオブジェクトをモジュール/ファンクターとして使用するには?

以下に示すように、多かれ少なかれオブジェクトインスタンスをモジュール/ファンクターとして使用したい:

格子ごとに異なる微積分インスタンスを作成できるようにします (実行する操作には、格子の最大値と最小値の情報が必要です)。同じ微積分の式を混合できるようにしたいが、異なる式を混合することは許可されていません。ここまでは順調ですね。微積分インスタンスを作成できますが、問題は、それらを操作する他のクラスに関数を記述できないことです。

たとえば、ファイルから式を読み取って返すパーサーを作成しようとしています。また、ScalaCheck を使用したテストで使用するランダム式ジェネレーターを作成しようとしていました。関数が Expr オブジェクトを生成するたびに、関数の外では使用できないことがわかりました。Calculus インスタンスを作成し、Expr オブジェクトを生成する関数に引数として渡しても、関数の戻り値は、関数の外部で作成されたオブジェクトと同じ型として認識されません。

多分私の英語は十分に明確ではありません.私がやりたいことのおもちゃの例を試してみましょう.

さて、上記のコードをコンパイルしようとすると、たくさんの

次のようなことをしようとすると、同じことが起こります。

ジェネレーター自体は問題ではありませんが、システムの残りの部分で同様のこと (つまり、微積分インスタンス式の作成と操作) を行う必要があることに注意してください。

私は何か間違ったことをしていますか?私がやりたいことをすることは可能ですか?

この問題に関するヘルプは非常に必要であり、高く評価されています. よろしくお願いします。


Apocalisp から回答を受け取り、試した後。

回答ありがとうございます。ただし、まだいくつかの問題があります。提案された解決策は、関数の署名を次のように変更することでした。

関連するすべての関数 (getRndExpr、getRndVal、および getRndVar) の署名を変更しました。そして、これらの関数を呼び出すすべての場所で同じエラー メッセージが表示され、次のエラー メッセージが表示されました。

コンパイラが正しい型を判断できないように見えたので、すべての関数呼び出しを次のように変更しました。

この後、最初の 2 回の関数呼び出し (genRndVal と genRndVar) ではコンパイル エラーは発生しませんでしたが、次の 3 回の呼び出し (genRndExpr への再帰呼び出し) では、関数の戻り値を使用して新しい Expr オブジェクトを作成します。次のエラー:

だから、また行き詰まった。どんな助けでも大歓迎です。