とても一般的な質問のタイトルについては申し訳ありませんが、質問を正しく呼び出す方法がわかりませんでした。ワイルドカードと静的ラッパーを使用したJavaジェネリック
Collections.singleton
呼び出しの結果のデフォルトのタイプを参照してください:私は説明できない何か
Set<Number> numberSingleton =
Collections.singleton((Number) null);
Set<Collection> rawCollectionSingleton =
Collections.singleton((Collection) null);
Set<Collection<String>> stringCollectionSingleton =
Collections.singleton((Collection<String>) null);
Set<? extends Collection<?>> anyCollectionSingleton =
Collections.singleton((Collection<?>) null);
は最後の行です。単純な代わりに? extends Collection<?>
が使用される理由Collection<?>
?
これは正しい解決方法ですか?
Set<Collection<?>> anyCollectionSingleton =
Collections.<Collection<?>>singleton((Collection<?>) null);
私はこのすべて始めた理由:
私はラインをコンパイルしていないとの問題があった:
java.util.Optional.ofNullable((Collection<?>) a).orElse((Collection<?>) b);
をこの問題を解決するようだが、価格は何ですか?
java.util.Optional.<Collection<?>>ofNullable((Collection<?>) a).orElse((Collection<?>) b);
あなたの質問は、IDEがその奇妙なタイプを生成する理由です。 Set>シングルトン= Collections.singleton((Collection >));うまく動作します –
AdamSkywalker
Oracle JDK 1.8.0_40は私にコンパイルエラーを返します:: java:互換性のない型:java.util.Setをjava.util.Set > '。どのJavaバージョンを使用していますか? –
Gedrox
最新、1.8.0_66 – AdamSkywalker