Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479

    Utilizzare costanti in un case caricate da file

    Ciao a tutti!
    Ho una classe che contiene un metodo statico getParameter(nomeParametro) il quale restituisce un intero.
    Ho così definito una costante in questo modo:

    public static final int miaCostante = MiaClasse.getParameter("Parametro1");

    fin qui tutto bene.. ora io vorrei utilizzare miaCostante all'interno di un case

    codice:
    for( int i = 0; i < 10; i++ ){
       switch( i ) {
          case miaCostante:
              ///fai qualcosa
              break;
        }
    }
    il compilatore però mi dice che posso utilizzare all'interno di uno switch solamente espressioni costanti.. ma la variabile che mi sono definito non è costante? public static final... posso usare solo costanti cablate nel codice ?
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    è inizializzata con un valore che non è noto fino all'esecuzione, questo dà fastidio

  3. #3
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    era quello che pensavo.. quindi devo trovare una soluzione diversa...
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Utilizzare costanti in un case caricate da file

    Originariamente inviato da Poker1
    ma la variabile che mi sono definito non è costante?
    Una cosa è una costante (nel senso che non cambia) e un'altra (molto più stringente) è una costante "a tempo di compilazione".

    Ed è costante a tempo di compilazione se il compilatore "sa" già (o può calcolare) in modo inequivocabile il valore.

    codice:
    public static final int a = 1234;   // costante a tempo di compilazione
    
    public static final int a = unMetodo();  // costante NON a tempo di compilazione
    Nel secondo caso è ovvio che il compilatore NON può sapere il valore.

    E per i case dello switch il compilatore deve sapere i valori a priori!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.