2010-12-03 4 views
1

J'ai un problème avec la librairie XMLTool java. Considérons le code suivant:Visibilité variable à l'intérieur d'une méthode de classe anonyme

private void parse() { 
    List<String> list = new ArrayList<String>(); 

    doc.gotoChild("Body") 
     .gotoChild("ExternalListOfCodes") 
     .forEachChild(new CallBack() { 

      public void execute(XMLTag doc) { 
       if (doc.getCurrentTagName().equalsIgnoreCase("UnitOfMeasure")){ 
        //Here's the problem!     
        list.add(
         doc.gotoChild("UnitOfMeasureCode").getInnerText() 
        ); 
       } 
      } 
     } 
} 

Il y a une boucle forEachChild et ce que je voudrais obtenir est d'ajouter du contenu de la balise à une liste. Certainement, ce n'est pas possible parce que la variable list n'est pas visible là.

Des idées pour le résoudre? Merci pour toute aide!

+0

(Notez que techniquement 'list' est visible ici, vous ne pouvez pas l'utiliser à moins que marqué' final'.) –

Répondre

4

Il est visible, il vous suffit de faire final:

final List<String> list = new ArrayList<String>(); 

Plus généralement, une classe anonyme (comme votre CallBack) ne peut accéder à des variables locales externes à la classe si ces variables sont déclarées final.

+0

Vous avez sauvé ma journée .. Merci pour votre réaction rapide! :) – monczek

+2

@monczek: Tout IDE décent va résoudre ce problème pour vous, par exemple. Cliquez avec le bouton droit de la souris sur l'erreur dans Eclipse, sélectionnez "quick fix" et la variable "final" apparaîtra. – skaffman

Questions connexes