問題タブ [enumset]

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 投票する
2 に答える
1760 参照

java - この Java EnumSet 初期化構造はどのように機能しますか?

次の例EnumMap<K,V>のように、インスタンスを構築する習慣があります。EnumMapExample.java

簡単な答えがある質問の可能性がありますがprivate final EnumMap<TestEnum, String> myEnumMap、2つの(不自然な)列挙型で満たすこの方法がどのように呼び出され、どのように機能するかをGoogleで見つけることはできませんか?

質問の絞り込み: だから、セミコロンの前のnew EnumMap<K,V>(SomeEnum.class){{ /* initialization code */ }};二重中括弧に注意してください。その二重中括弧は何ですか?{{ }};

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

java - Java のスレッドセーフ列挙セット

次のコードを使用して、EnumSet の同期インスタンスを初期化します。

2 つの質問があります。

  • この場合、コンパクトさと効率性などの EnumSet のすべての利点を保持できますか?
  • EnumSetの空で同期されたインスタンスを取得するための意味的に豊富な方法はありますか?
0 投票する
2 に答える
1443 参照

java - JavaでEnumSetを適切に拡張/サブクラス化するにはどうすればよいですか?

私はEclipseEnumSetで実装するために拡張しようとしました。Comparableしかし、私は最初から間違いだらけです。これが私が始めるものです:

(課題 1) 明示的なコンストラクターの定義

それはすぐに私に通知します:Implicit super constructor EnumSet<Suits>() is undefined for default constructor. Must define an explicit constructor.したがって、私はクイックフィックスに従い、次のコンストラクターを追加します:

...その後、次のように通知されますThe constructor EnumSet<Suits>(Class<E>, Enum[]) is not visible。このクラスとこのコンストラクターの両方のアクセス修飾子を無駄に変更しようとしました。

(課題 2) 抽象メソッドのオーバーライド

次の問題は、先に進んで次のエラー Eclipse レポートを修正することにしたときです: The type ExtendedEnumSet must implement the inherited abstract method AbstractCollection<Suits>.iterator(). もちろん、これは氷山の一角にすぎません。もう一度クイック フィックス ( add unimplemented methods) を使用すると、以下が追加されます。

次にレポートする場所The method addAll() of type ExtendedEnumSet must override or implement a supertype method。と に対してこのエラーがエコーされaddRangeますcomplement。:addAllから署名をコピーできます。しかし、API ドキュメントから他のメソッド シグネチャ ( 、) をコピーしようとすると、存在しないようです。私は途方に暮れています。Setpublic boolean addAll(Collection<? extends Suits> collection)addRangecomplement

私はEnumMap代わりに行ってきました、そしてそれはうまくいきます。EnumSet不可能のようです。何か不足していますか?

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

java - EnumSet に型引数を追加すると、常に「境界の不一致」が発生します

私は以下のコードを持っています:

以下のように1つのメソッドをオーバーロードし、バインドされた不一致を取得したい:

そして、私は以下に変更しましたが、うまくいきません。

なんで?そして、どうすればよいですか?

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

java - 読み取り専用の EnumSet イテレータはスレッドセーフですか?

最終的で不変の がEnumSetあります。つまり、コンストラクターで一度初期化されます。

このスレッドのcontains()メソッドは安全ですか? EnumSet内部的にイテレータを使用して内容チェックを行っています。したがって、2 つのスレッドが同時に を呼び出している場合contains()、1 つの呼び出しでのイテレータの位置が他のスレッドに影響を与える可能性がありますか? それとも、これら 2 つのスレッド呼び出しでイテレータのインスタンスが異なるのでしょうか?

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

java - マップ操作時の不具合、オブジェクト> Javaで

memberinは、異なるEnum タイプを持ついくつかの種類のEnumSetMyClassを格納するために使用されます。相対メソッドを実装しているときに、次のようにメソッドを呼び出そうとすると、いくつかの問題が発生します。

エラーが発生します:

putEnumSet(Class<E>, E)型のメソッドMyClass<Word>は引数に適用できません(Class<capture#1-of ? extends EnumSet>, EnumSet<Category>)

この問題に対処するには?raw typeまたはtype eraserに由来する可能性があると思いますが、主な理由はわかりません。ありがとう。

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

java - Java Enum に Set と Map が必要な理由

私は列挙型が初めてです。Enum を学習しているときに、EnumSet と EnumMap に出会いました。EnumSet と EnumMap を使用してマップとセットを処理する場合、この質問の対応するハッシュよりもはるかに優れていることを理解しています。

EnumSet または EnumMap がハッシュ化された対応物よりもパフォーマンスが高い可能性が高いのはなぜですか?

私の質問は

Java で Enum の Map と Set が必要になるのはどのようなシナリオですか?

私は実際のシナリオを知ることにもっと興味があります。

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

java - Eclipse コンパイラーと javac の不一致 - 列挙型、インターフェース、およびジェネリック

次のコードは、Eclipse でコンパイル (および期待どおりにテストを実行) します。

ただし、javac直接 (JDK 7) または Maven 経由でコンパイルすると、次のエラーで失敗します。

正直なところ、列挙型 + インターフェース + 型パラメーター (ジェネリック) の複雑さが一気に複雑になり、コードを書いているときに気が遠くなりましたが、ようやく正しく理解できたと思いました。

目標は、次のような呼び出しコードを記述することです。

たとえば、Eclipse では、次のテストがコンパイルされ、パスします。

Eclipse と javac のどちらが「正しい」かについての手がかりをいただければ幸いです。

また、アイデアを実装するための代替方法についてのアドバイスも高く評価されます。クラスを、で使用できEnumSet.allOf()、Enum オブジェクトのタイプを決定するメソッド param として使用します。EnumSet

ところで、このメソッドの目的をわざわざ批判しないでください。より便利で意味のあるコードから減らしました。「列挙型から最初の要素を見つける」ことのメリットについて議論することに興味はありません-それはこの質問のポイントではありません。