Java switch-setning med flere tilfeller
Bare prøver å finne ut hvordan du bruker mange flere tilfeller for en Java-setning. Her er et eksempel på hva jeg prøver å gjøre:
switch (variable)
{
case 5..100:
doSomething();
break;
}
kontra å måtte gjøre det:
switch (variable)
{
case 5:
case 6:
etc.
case 100:
doSomething();
break;
}
Noen ideer om dette er mulig, eller hva et godt alternativ er?
107
3
Dessverre er det ikke mulig i Java. Du må ty til
if-else
-setninger.Det andre alternativet er helt greit. Jeg er ikke sikker på hvorfor en av respondentene sa at det ikke var mulig. Det går helt fint, og jeg gjør det hele tiden:
Et objektorientert alternativ for å erstatte overdrevent store
switch
- ogif/else
-konstruksjoner er å bruke etChain of Responsibility Pattern
for å modellere beslutningsprosessen.**Mønster for ansvarskjede
Her er et eksempel på en implementering som også er typesikker ved hjelp av Generics.
Dette er bare en rask stråmann som jeg snekret sammen på noen få minutter. En mer sofistikert implementering kan gjøre det mulig å injisere et slags
Command Pattern
iCase
-implementeringsinstansene for å gjøre det til en mer IoC-lignende call back.En fin ting med denne tilnærmingen er at Switch/Case-setninger handler om sideeffekter, dette innkapsler sideeffektene i klasser slik at de kan administreres og gjenbrukes bedre, det ender opp med å være mer som mønstermatching i et funksjonelt språk, og det er ikke en dårlig ting.
Jeg vil legge ut eventuelle oppdateringer eller forbedringer av denne Gist på Github.