IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Erreur "Illegal modifier for the variable tabVarList; only final is permitted"


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut Erreur "Illegal modifier for the variable tabVarList; only final is permitted"
    Bon alors voilà je suis en plein combat contre la redondance et je ne comprend pas l'erreur ici:
    Je fais un tableau de variable pour permettre de passer à mes déclaration de listes une par une à la boucle for juste en-dessous.
    Mais le soucis c'est que tabVarList[i] est souligné et me donne l'erreur que j'ai spécifié dans le titre "Illegal modifier for the variable tabVarList; only final is permitted"

    Je ne comprend pas trop, j'ai retiré le type d'accès dans ma déclaration de tableau mais ça ne changer rien.

    Merdi d'avance pour votre réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public class VarDeclaration extends Fragment {
     
    	final String tabVarList[] = {"mDataAll","mDataQuot, mDataHebd, mDataMens, mDataTrim, mDataAnn"};
     
    	/**===============================================
            Création des list de donnée pour chaque listView
            ===============================================**/ 
    	public List<String> mDataAll = new ArrayList<String>();
    	public List<String> mDataQuot = new ArrayList<String>();
    	public List<String> mDataHebd = new ArrayList<String>();
    	public List<String> mDataMens = new ArrayList<String>();
    	public List<String> mDataTrim = new ArrayList<String>();
    	public List<String> mDataAnn = new ArrayList<String>();
     
    	public void tabDeclaration(){
    		for(int i=0; i==tabVarList.length;i++){
    			public List<String> tabVarList[i]; = new ArrayList<String>();
    		}
    	}

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Le code ci-dessous est une abomination :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0; i==tabVarList.length;i++){
    	public List<String> tabVarList[i]; = new ArrayList<String>();
    }
    • Ta boucle est erronée : la condition devrait être i<tabVarList.length ou bien i!=tabVarList.length
    • Il n'y a jamais de modificateur de visibilité (public/private) dans le corps d'une méthode
    • tu redéclares une même variable locale à chaque tour de boucle
    • cette variable locale porte le même nom que ton champs
    • tabVarList est déclaré final, donc aucune affectation n'est possible
    • l'affectation c'est "=", pas ";="
    • ...

  3. #3
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Ca y est, je viens de comprendre ce que tu voulais faire et ton "combat contre la redondance".
    Laisses-tomber. A la différence d'autres langages, il n'est pas possible de manipuler des variables --et donc des champs -- dynamiquement sauf à passer par la reflection (java.lang.reflect). Or, (1) je sens que tu va ramer pour utiliser cette technique et (2) cela engendre un surcoût à l'exécution.

    Déclares plutôt une HashMap. Les clés seront des String ("mDataAll","mDataQuot",...) et les valeurs des ArrayList<String>. Ainsi, tu pourras itérer sur ta HashMap et instancier (new) les ArrayList.

    Pour y accéder, pas beaucoup plus dur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_map.get("mDataQuot").get(4); //5e élément de la liste associée à la clé mDataQuot

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Vraiment désolé pour les erreurs de frappes :s
    J'espère que j'ai évité de provoquer des crises cardiaques ^^
    Je vais tenter de travailler la question.

    J'ai déjà du mal à trouver la meilleure solution pour des déclarations alors faut pas se demander ce que ça va donner avec mes boutons (apparemment mettre un listener sur chaque bouton un par un est considéré aussi comme de la redondance mal venue...)

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par vangoeth Voir le message
    Mais le soucis c'est que tabVarList[i] est souligné et me donne l'erreur que j'ai spécifié dans le titre "Illegal modifier for the variable tabVarList; only final is permitted"
    Oui, la variable c'est tabVarList... le type c'est String[] et ca s'écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    final String[] tabVarList = ....;
    D'ailleurs, vu que la varaible est 'final' (et ne peut donc être modifiée), elle devrait être statique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    final static String[] TAB_VAR_LIST = ...;
    Avant de combattre la redondance, commence par réviser la syntaxe du langage Java, en particulier les notions de "scope"... Mieux vaut un bon programme qui prend de la place en mémoire, qu'un mauvais programme aussi efficace soit-il....

  6. #6
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Juste pour s'amuser...

    Citation Envoyé par nicroman Voir le message
    D'ailleurs, vu que la varaible est 'final' (et ne peut donc être modifiée), elle devrait être statique:
    Le terme "modifié" n'est pas bien placée. Et le fait que la variable est declarée "final" seulement ne suffit pas et n'oblige pas d'être "static". Une variable "final" peut être modifiée, mais pas assignée à une autre valeur dès qu'elle est une fois assignée.

    Je dirai :
    "
    D'ailleurs, vu que la variable est "final" ( et ne peut être assignée qu'une seule fois) et vu qu'il est deja "assignée" à une valeur, alors elle devrait être static.
    "

  7. #7
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pas de bol, là on parle d'array (immutable) de strings (immutable)....

    Dommage

Discussions similaires

  1. [PPC][C#][Sql CE] erreur "no data exists for the row/column"
    Par Jessika dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/04/2007, 13h13
  2. Réponses: 3
    Dernier message: 24/11/2006, 19h20
  3. Réponses: 3
    Dernier message: 23/01/2006, 17h29
  4. Erreur "For loop variable simple local varaible"
    Par Yepazix dans le forum Langage
    Réponses: 13
    Dernier message: 17/09/2005, 23h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo