2010-06-06 2 views
1

je cible délibérément Java OS 1.4.2Java - Iterator: « Erreur de syntaxe, les types paramétrés ne sont disponibles que si le niveau de la source est de 5,0 »

Je suis en train d'utiliser un itérateur combiné avec le POI apache pour lire une feuille de calcul Excel.

Le code fonctionne parfaitement dans java 1.5, mais dans la version 1.4.2, l'erreur est répertoriée dans l'objet de la question.

le code est:

Iterator<HSSFRow> myIter = null; 

* Mise à jour - Suppression de la déclaration nulle, et immédiatement mis à la collection. Encore obtenir la même erreur! "Iterator ne peut pas être résolu en un type" (Iterator est un type abstrait). Cette erreur se produit avant que j'essaie d'obtenir les valeurs de l'itérateur!

Iterator itRows = hsSheet.rowIterator();

    • J'ai également importé la variable HSSFRow

il se brise sur cette ligne de code, qui est clairement au début de l'application. Je ne comprends pas ce qui doit être fait pour corriger ce problème. S'il vous plaît laissez-moi savoir si vous avez un aperçu!

+0

I substitué entre [crochets] pour les flèches, car ils ont été supprimés du texte – Wooooo

+0

Utilisez les balises de code pour le code, en faisant cette substitution que vous avez complètement changé le code. – Goibniu

Répondre

1

Vous ne pouvez pas utiliser de génériques (c'est-à-dire types paramétrés) dans les versions Java antérieures à la version 1.5. Les génériques introduits en 1.5 et même la syntaxe SomeClass<T> n'est pas supporté en 1.4.2. C'est pourquoi vous obtenez l'erreur.

0

Etes-vous sûr que ce n'est pas Iterator<Something> myIter = null; parce que cela semble être ce que l'erreur dit; vous utilisez des génériques et essayez de compiler pour 1.4, mais les génériques ont seulement été ajoutés en 1.5.

Modifier: Vous pouvez utiliser la touche ` (à gauche de la touche 1) pour délimiter les blocs de code; Vous devez supprimer les génériques et utiliser Iterator myIter = null;

4

Java avec la version 1.5 ci-dessous ne gère pas les types génériques (alias types paramétrés par d'autres types: Liste). Pour exécuter votre code dans Java 1.4, vous devez perdre le paramètre de type générique et effectuer les conversions vous-même.

Iterator myIterator = // initialize it 
HSSFROW row = (HSSFROW)myIterator.next(); 

Un exemple plus complet:

List collection = new ArrayList(); 

collection.add("a"); 
collection.add("b"); 
collection.add("c"); 

Iterator myIterator = collection.iterator(); 

while (myIterator.hasNext()) { 
    String value = (String) myIterator.next(); 
    System.out.println("value: " + value); 
} 

et la sortie est constitué par:

value: a 
value: b 
value: c 
+0

ah, j'ai essayé ça.Lorsque je l'initialise (à null) puis le définir plus tard, je reçois toujours la même erreur – Wooooo

+0

cela ne fonctionne pas :( – Wooooo

+1

J'ai posté un exemple plus complet dans la réponse.Il n'utilise pas HSSFROW mais il fonctionne avec une collection de chaînes –

-1

Essayez ceci:

lignes de Iterator = sheet.rowIterator();

while (rows.hasNext()) 
    { 
     row=(HSSFRow) rows.next(); 
     Iterator cells = row.cellIterator(); 

     while (cells.hasNext()) 
     { 
      cell=(HSSFCell) cells.next(); 

      if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) 
      { 
       System.out.print(cell.getStringCellValue()+" "); 
      } 
      else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) 
      { 
       System.out.print(cell.getNumericCellValue()+" "); 
      } 
      else 
      { 
       //U Can Handel Boolean, Formula, Errors 
      } 
     } 
     System.out.println(); 
    } 
+0

Qu'est-ce qui vous fait penser que cela résoudrait réellement le problème? – mjuarez

+0

S'il vous plaît ne postez pas de réponses spéculatives qui pourraient aider, vous devriez seulement répondre lorsque vous comprenez le problème et avez une solution. – SuperBiasedMan