問題タブ [enum-map]
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 - EnumMap.containsValue(null) は真の JDK 7 を返します
奇妙な行動を見つけました。を使用してJDK 1.7
います。印刷するときmap.containsValue(null)
true
MAP に null 値がありませんが、返されます。
java - javaでEnumMapを反復する方が良いのは何ですか?
enum と対応する emummap を次のように宣言したとします。
たとえばMyEnumMap
、それぞれEntry
を1つずつ印刷するだけです。
次の場合にキーを反復するための最良のアプローチ(最速)は何ですか:
MyEnum
各定数 inがキー in であることが保証されている場合MyEnumMap
- の各定数が
MyEnum
キーである場合とそうでない場合がある場合MyEnumMap
MyEnumMap.keySet()
またはを使用して foreach ループを選択したいMyEnum.values()
。他のアプローチは大歓迎です。
java - Java マルチスレッド ソケット クライアント/サーバー: Enummap オブジェクトの送受信
そもそも、これはJavaFX
古典的な MVC アーキテクチャのアプリケーションです。サイコロを振って表示するアプリです。目標は、それらを複数のクライアントに表示することです。クライアントを処理するために、ソケットを備えたマルチスレッドの「エコー」サーバーを使用しています。JavaFXではソケットを介してノードを直接送信できないため、クライアントによって生成された引数を送信することにしました。クライアントはそれらをサーバーに送信して、接続されているすべてのクライアントに引数をエコーできるようにします。
仕組みは次のとおりです。
最初に、メイン サーバー スレッドが作成されます。を作成しServerSocket
、while ループは、接続されたクライアントを処理する新しいスレッドを作成します。このメイン サーバー スレッドには 3 つのメソッドがあります。2 つは接続されたクライアントを追跡し、1 つは着信引数を接続されたすべてのクライアントに送信します。
クライアントを処理するスレッドは次のとおりです。
今はクライアント側です。メイン アプリには、2 つのフィールドの値を取得して次の場所に格納するコントローラーがあります。Enummap
そして、サーバーへの次のスレッド処理接続に送信します。
クライアント スレッド (サーバーに接続されている)
典型的なシナリオは次のようになります: サーバーの起動 > クライアントの起動 (接続が成功) > ユーザーがロールを押します。ユーザーがロールを押すと、コントローラーによって作成された列挙マップに 2 つの値が格納され、コントローラーはこの列挙マップを send() メソッドを介してクライアント スレッドに転送します。このメソッドは、enummap を objectoutput ストリームに書き込みます。
問題は次のステップで発生します。サーバー側のクライアント接続を処理するスレッドは、ストリームから enummap を受け取ります。
しかし、それを Enummapにキャストできず、例外がスローされるようです
java.lang.ClassCastException: java.io.ObjectStreamClass を java.util.EnumMap にキャストできません
java.lang.Thread.run で (不明なソース)
私は何を間違っていますか?
java - EnumMap のマップを初期化する
GUIウィジェットを整理しようとしているJavaFXアプリケーションで次のプライベートメンバーを初期化する必要がありますが、正しい構文がわかりません。正しい構文を教えてください:
EnumMap に使用している列挙型は次のとおりです
これは、サービス名キーに基づいてこのマップまたはEnumMapsで整理しようとしているウィジェットの選択です。したがって、次の 4 つのチェックボックスとラベルのリストは一緒に属します (サービス 2 などに同様の JavaFX ウィジェットがあります。
これは、JavaFX ウィジェットで初期化しようとしているプライベート メンバーです。
トップ レベルの空の mServiceWidgetMap を次のように初期化できます。
そして、EnumMaps を new EnumMap<>(Connection.class); として初期化する必要があることを知っています。しかし、これらの EnumMaps の値のサイズにウィジェットのペアを配置する必要もあり、これを行う方法について混乱しています。
ただし、enumMap 値のペアを初期化する方法がわかりません。構文のヘルプは大歓迎です。
編集 しばらく苦労した後、私は次のことを思いつきましたが、確かに、二重ブレースの初期化やその他の冗長なアプローチのようなより単純なアプローチが必要です。
java - EnumMap はタイプセーフですか?
[コミュニティのためにこれを再開することに投票します。Map.get(Object key) が (完全に) ジェネリックではない理由は何ですかという質問は、実際に問題の根本原因を突き止めています。しかし、私にとってスタック オーバーフローとは、質問に答えたり、実際のサンプル コードにアクセスしたり、特定の API 使用例をサポートしたりすることであり、固有の根本原因の規範を作成することではありません。タイトルのせいか、他の投稿を見つけることができませんでした。列挙型は、名前付き定数の安全な代替手段を提供するために作成されました。この問題はその利点を台無しにします -- API で言及せず、コンパイラの警告もなしに。安全性のレベルを名前付き定数のレベルよりも低くするのはなぜですか? 列挙型ユーザーにとって、この質問は役に立ちます -- Google で 1 位になっています。]
これはコンパイルされるはずですか?EnumAlpha 型で初期化された enumMap から別の型 (EnumDelta) の列挙型メンバーを取得していますが、そうです。ジェネリック型として、EnumMap は EnumAlpha に関して型安全性を保証すると考えました。
プログラム出力:
ヌル
java - Javaにネストされた列挙型のようなものはありますか?
州にアクセスできる Country 列挙型を実行したいのですが、どうすればよいですか?
このようなもの:
java - グアバを使用して空の ImmutableEnumMap を初期化する方法は?
パラメータとして取るコンストラクタがありMap<ProcessInfoEnum, String>
ます。NO_OPERATION
そのため、以下に示すように、空の不変マップで変数を初期化しています。
EnumMap
いくつかの設計変更により、以下に示すように使用するようにコンストラクターを変更しました。
空の不変列挙型マップを初期化できるように、同じ同等の行を for NO_OPERATION
but with で書くにはどうすればよいでしょうか?ImmutableEnumMap
はパッケージプライベートクラスなのでImmutableEnumMap
できませんImmutableEnumMap.of()
。他に方法はありますか?