Apa yang dimaksud dengan tilde dalam tanda kurung siku saat membuat kelas generik Java?


127

Saya membaca beberapa contoh JMockit dan menemukan kode ini:

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

Apa arti tilde dalam pengenal generik? Saya tahu ini adalah operator NOT bitwise unary, tapi saya tidak melihat operand di sini.

Juga, saya mencoba mengompilasinya dan mendapat kesalahan. Apakah saya baru saja melewatkan sesuatu?

Jawaban:


158

Ini hanya singkatan untuk "sama seperti dalam deklarasi".

Beberapa IDE, misalnya IntelliJ, juga menggunakan ini.

File pada disk tidak memiliki notasi ini, yang hanya merupakan pemadatan di IDE GUI.


1
Itu adalah tangkapan layar Intellij.
Michael K

Hanya untuk klarifikasi pribadi - IntelliJ menghasilkan file sumber Java dengan notasi ini , iaw, file sumber dengan konten Java ilegal ??? Atau apakah ini hanya tampilan sumber dan file yang disimpan sudah benar?
Andreas Dolk

5
@Andreas_D: Ini hanya tampilan. File di disk baik-baik saja.
openCage

6
Dan sebenarnya, tilde berwarna abu-abu (untuk menunjukkan bahwa ini berbeda), dan jika Anda mengkliknya, itu akan meluas ke definisi lengkap.
yshavit

1
Ini dapat dinonaktifkan di pengaturan intelij untuk editor / umum / Code Folding.
Ocie Mitchell


9

Dalam IntelliJ IDEA, di ~sini:

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

artinya String, yang sama dengan deklarasi di sisi kiri.


2

Saya pikir itu adalah singkatan dari apa pun jenisnya, dalam hal ini OrderItem .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.