O que significa um til entre colchetes angulares ao criar uma classe genérica Java?


127

Eu estava lendo alguns exemplos do JMockit e encontrei este código:

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

O que significa o til no identificador genérico? Eu sei que é o operador NOT bit a bit unário, mas não vejo um operando aqui.

Além disso, tentei compilá-lo e recebi um erro. Só estou perdendo alguma coisa?

Respostas:


158

É apenas uma abreviação para "o mesmo que na declaração".

Alguns IDEs, por exemplo, o IntelliJ também usam isso.

Os arquivos no disco não possuem essa notação, que é apenas uma compactação na IDE GUI.


1
Era uma captura de tela do Intellij.
Michael K

Apenas para esclarecimento pessoal - o IntelliJ produz arquivos de origem Java com essa notação, iaw, arquivos de origem com conteúdo ilegal de Java ??? Ou isso é apenas a visão da fonte e o arquivo salvo está correto?
Andreas Dolk

5
@Andreas_D: É apenas uma visão. Os arquivos no disco estão ok.
openCage 3/02

6
Na verdade, o til fica acinzentado (para indicar que é diferente) e, se você clicar nele, ele será expandido para a definição completa.
yshavit

1
Isso pode ser desativado nas configurações intelij para editor / geral / dobragem de código.
Ocie Mitchell


9

No IntelliJ IDEA, o ~aqui:

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

significa String, o mesmo que na declaração no lado esquerdo.


2

Eu acho que é uma abreviação para significar qualquer que seja o tipo, neste caso OrderItem .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.