|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2007
Città: calafrica
Messaggi: 196
|
[java]switch
devo implementare uno switch su dei messaggi, il solo problema è che il campo sul quale lo devo fare è una stringa!
lo switch mi richiede un intero... vi spiego: ho una coda di messaggi con un determinato comportamento, che può essere, ad es, CFP, REQUEST... a seconda di questo comportamento ho i casi Codice:
if(msgS!=null){ performativaS =msgS.getPerformative();//ricavo qui l'oggetto su cui fare lo switch switch (performativaS) { case REQUEST:{} ragazzi...sto editando per evidenziare il codice ma son fusa.... Ultima modifica di yashi79 : 26-11-2007 alle 09:03. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
usa una serie di else if
__________________
http://www.tevigroup.it/ |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Apr 2007
Città: calafrica
Messaggi: 196
|
quindi devo rinunciare allo switch?
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
A meno che tu non cambi il tipo di messaggio, ma gari usi delle cosntanti
__________________
http://www.tevigroup.it/ |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Apr 2007
Città: calafrica
Messaggi: 196
|
hi hi hi
no sono messaggi std apartenenti ad una libreria predefinita... grazie cmq! altre opzioni? |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
.
__________________
http://www.tevigroup.it/ Ultima modifica di isAlreadyInUse : 25-11-2007 alle 19:39. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
potresti usare un dizionario per mappare le stringhe in numeri...
in ogni caso occhio con gli switch: vanno usati con attenzione se non vuoi che il codice diventi poco mantenibile... se i casi sono molti o se prevedi di doverli cambiare considera di mappare le stringhe in oggetti incaricati di gestire ciascuno un determinato messaggio |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Mappa. Come chiavi usi i "tipi" dei messaggi e come valori un qualsiasi tipo di oggetto che corrisponda a ciò che devi fare in conseguenza di quel messaggio. In ipotesi:
class Messaggio ...public String getPerformativa()... interface Azione ...void esegui(Messaggio m) Codice:
public class ActionChooser { private HashMap<String, Azione> map = new HashMap<String, Azione>(); public ActionChooser(Map<String, Azione> choiceMap) { map.putAll(choiceMap); } public void execute(Messaggio m) { map.get(m.getTipo()).esegui(m); } } Codice:
//REQUEST è un'ipotetica stringa HashMap<String, Azione> dataMap = new HashMap<String, Azione>(); dataMap.put(REQUEST, new Azione() { public void esegui(Messaggio m) { System.out.println("REQUEST!!!"); } }); Codice:
ActionChooser chooser = new ActioChooser(dataMap); Codice:
actionChooser.execute(msgS);
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Quote:
Ti propongo un'altra soluzione: metti i casi dentro ad un ArrayList e poi fai: Codice:
switch (tuoArrayList.indexOf(performativaS)) { case tuoArrayList.indexOf(REQUEST):{} case tuoArrayList.indexOf(CFP):{} ecc... |
|
![]() |
![]() |
![]() |
#10 | |
Member
Iscritto dal: Apr 2007
Città: calafrica
Messaggi: 196
|
Quote:
|
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Apr 2007
Città: calafrica
Messaggi: 196
|
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Tutto sto casino per niente
![]()
__________________
http://www.tevigroup.it/ |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:49.