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


127

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

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

一般的な識別子のチルダは何を意味しますか?単項ビット単位のNOT演算子であることはわかっていますが、ここにはオペランドがありません。

また、コンパイルしてみたところエラーになりました。何か足りないのですか?

回答:


158

これは、「宣言と同じ」の省略形にすぎません。

一部のIDE、たとえばIntelliJもこれを使用します。

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


1
これはIntellijのスクリーンショットでした。
マイケルK

個人的な説明のために-IntelliJは、この表記でJavaソースファイルを生成します。または、これはソースのビューであり、保存されたファイルは正しいですか?
Andreas Dolk、2011

5
@Andreas_D:これは単なるビューです。ディスク上のファイルは問題ありません。
openCage、2011

6
そして実際には、チルドは灰色になっており(異なることを示しています)、クリックすると完全な定義に拡大されます。
yshavit 2013

1
これは、editor / general / Code Foldingのintelij設定で無効にできます。
Ocie Mitchell 2018


9

IntelliJ IDEAでは、~ここ:

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

String、左側の宣言と同じです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.