web-dev-qa-db-ja.com

Javaジェネリッククラスを作成するとき、山括弧内のチルダは何を意味しますか?

私はいくつかのJMockitの例を読んでいて、次のコードを見つけました。

final List<OrderItem> actualItems = new ArrayList<~>();

汎用識別子のチルダとはどういう意味ですか?私はそれが単項ビット単位のNOT演算子であることを知っていますが、ここにはオペランドがありません。

また、私はそれをコンパイルしようとしましたが、エラーが発生しました。何かが足りないだけですか?

115
Michael K

これは、「宣言と同じ」の省略形です。

いくつかのIDE、たとえばIntelliJもこれを使用します。

ディスク上のファイルにはこの表記はありません。これはIDE GUIでの圧縮のみです。

145
openCage

チルダがなかった場合、コードはすでにJava 7。 Java 7ではダイヤモンド演算子 したがって、これは正当ですJava code:

Map<String, List<String>> map = new HashMap<>();

(ただし、この構文にはチルダはありません)

14
Andreas_D

IntelliJ IDEAでは、~ ここに:

Set<String> associations = new LinkedHashSet<~>();

は、Stringを意味します。これは、左側の宣言と同じです。

8
Zinan Xing

これは、タイプが何であれ、この場合はOrderItemを意味する省略形だと思います。

2
Andrew White