2013-08-16 2 views
1

En Java, que signifie la signature de méthode Enumeration<? extends ZipEntry>?En Java, que fait la signature de la méthode Enumeration <? étend ZipEntry> signifie?

Il définit un type d'énumération générique. Je ne sais pas ce que le ? signifie. Il semble que c'est dire qu'un nouveau type est en cours de définition et tout ce que le compilateur doit savoir, c'est que le nouveau type s'étend ZipEntry. Est-ce exact?

Tel est le contexte du code:

for (Enumeration<? extends ZipEntry> e = zipfile.entries(); 
     e.hasMoreElements(); fileNumber++) 
{ 
    // ...etc... 
} 

Si je devais parler Enumeration<? extends ZipEntry> en anglais, ce qui serait dit?

Merci!

+3

Une énumération de tout type qui étend ZipEntry. –

+1

Le meilleur recours pour vous est de lire un bon tutoriel sur les génériques. –

+1

@Marko: Oui, vous avez probablement raison. Un livre sur les génériques à Java de toute façon. Cependant, je comprends le concept des génériques. C'était plus d'une question de syntaxe. – quakkels

Répondre

3

Cela signifie "un Enumeration de type défini, mais non spécifié qui s'étend sur ZipEntry". Voir: Upper Bounded Wildcards dans le didacticiel Oracle sur les génériques et Angelika Langer's Java Generics FAQ.

+0

Ok, donc cela indique un type qui existe déjà, en particulier, ce n'est pas un type anonyme ou quelque chose comme ça? – quakkels

+0

@quakkels Un type anonyme ne peut pas être référencé, il n'a pas de nom. – m0skit0

+0

Oui, je suppose :-) – quakkels