เครื่องหมายทิลเดอร์ในวงเล็บเหลี่ยมหมายถึงอะไรเมื่อสร้างคลาสทั่วไปของ Java


127

ฉันกำลังอ่านตัวอย่าง JMockit และพบรหัสนี้:

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

เครื่องหมายทิลเดอร์ในตัวระบุทั่วไปหมายถึงอะไร ฉันรู้ว่ามันเป็นโอเปอเรเตอร์ NOT แบบ unary bit แต่ไม่เห็นตัวถูกดำเนินการที่นี่

นอกจากนี้ฉันพยายามรวบรวมและพบข้อผิดพลาด ฉันขาดอะไรไปหรือเปล่า?

คำตอบ:


158

มันเป็นเพียงการชวเลขสำหรับ "เหมือนกับในประกาศ"

IDE บางตัวเช่น IntelliJ ก็ใช้เช่นกัน

ไฟล์บนดิสก์ไม่มีสัญกรณ์นี้ซึ่งเป็นเพียงการบีบอัดใน IDE GUI


1
มันเป็นภาพหน้าจอของ Intellij
Michael K

เพียงเพื่อความกระจ่างส่วนตัว - IntelliJ สร้างซอร์สไฟล์ Java ด้วยสัญกรณ์นี้ iaw ไฟล์ซอร์สที่มีเนื้อหา Java ที่ผิดกฎหมาย ??? หรือนี่เป็นเพียงมุมมองของแหล่งที่มาและไฟล์ที่บันทึกไว้ถูกต้อง?
Andreas Dolk

5
@Andreas_D: มันเป็นเพียงมุมมอง ไฟล์ในดิสก์ก็ใช้ได้
openCage

6
และจริงๆแล้วเครื่องหมายทิลเดอร์จะเป็นสีเทา (เพื่อบ่งบอกว่ามันต่างกัน) และถ้าคุณคลิกมันจะขยายเป็นคำจำกัดความแบบเต็ม
yshavit

1
สิ่งนี้สามารถปิดได้ในการตั้งค่า intelij สำหรับตัวแก้ไข / ทั่วไป / การพับโค้ด
Ocie Mitchell

16

ถ้าไม่มีเครื่องหมายตัวหนอนฉันจะบอกว่ารหัสนั้นเป็น Java 7 อยู่แล้วJava 7 อนุญาตให้ตัวดำเนินการเพชรดังนั้นนี่คือ / จะเป็นรหัส Java ที่ถูกกฎหมาย:

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

(แต่ - ไม่มีเครื่องหมายทิลเดอกับไวยากรณ์นี้)



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.