|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
[Java]Profondità massima switch case
Salve a tutti,
sapete per caso il limite di uno switch case in java? Buon fine we
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
In realtà il linguaggio Java ti dice che un costrutto switch-case viene compilato in bytecode in un certo modo con certe istruzioni, non ti impone un numero limite di casi per uno switch case; il limite è un dettaglio implementativo della macchina java più che del linguaggio, è un limite del software che si occupa di compilare e interpretare il tuo codice sorgente e produrre del bytecode da esso.
In genere le macchine java rappresentano ogni case assegnandogli un numero e usando quel numero come ID, tipicamente per fare ciò viene impiegato un intero da 32 bit, quindi in molte macchine java il limite teorico per il numero di case possibili è 2^32 . Resta inteso che superare anche solo 10 case diventa follia pura, il tuo codice diventa astruso, molto poco leggibile e mantenibile, 2^32 = 4,294,967,296 casi . |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
In realta' si possono usare anche i numeri a 64 bit e le stringhe; tuttavia la sua domanda era piu' pratica, immagino che The_ouroboros, che non e' alle prime armi, sapesse gia' fare questo calcolo.
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Muchas gracias.
Era un dubbio che mi era venuto dato che sto sviluppando una piccola webapp in groovy. Dato che alla fine si compila in bytecode java ha gli stessi "limiti" e mi era sorto la curiosità sui bit dell case id. Cmq uso la jvm Oracle Sent from my Nexus 5 using Tapatalk
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
Trovo comunque che sia più una curiosità che altro, nessuna persona sana di mente vorrebbe superare la decina di casi per uno switch case . |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
concordo in pieno
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2001
Città: Bologna
Messaggi: 955
|
In questo scenario orribile di infiniti "case" probabilmente il primo limite contro cui sbatti il naso è la dimensione massima del bytecode, che mi pare sia 64kb per classe.
Limite contro cui mi è capitato di andare a sbattere con dei sistemi che generano codice automaticamente.
__________________
Le mie foto su Flickr: Clicca qui ...dopodichè ditemi un altro sito simile che consenta l'accesso alle foto solo per set! ![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Interessante, muchas gracias por el información
Sent from my Nexus 5 using Tapatalk
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:52.