Re: [Switch()...case]From String to enum
Daniel Moyne <dmoyne@tiscali.fr> writes:
switch structure from a string value
One might want to write:
switch( args[ 0 ])
{ case "alpha":
System.out.println( "alpha" );
break;
case "gamma":
System.out.println( "gamma" );
break; }
If it is known, that ?args[ 0 ]? always is either
?alpha? or ?gamma?:
switch( args[ 0 ].charAt( 0 ))
{ case 'a':
System.out.println( "alpha" );
break;
case 'g':
System.out.println( "gamma" );
break; }
One also sometimes can switch on a hash code of
the string, or even a perfect hash code.
Otherwise, a possible emulation is:
class Switch
{ final java.util.Map<String,Runnable> me;
Switch( final Object ... args )
{ me = new java.util.HashMap<String,Runnable>();
for( int i = 0; i < args.length; i += 2 )
me.put(( String )args[ i ],( Runnable )args[ i + 1 ]); }
void by( final String text ){ me.get( text ).run(); }}
public class Main
{ public static void main( final String[] args )
{ new Switch
( "alpha", new Runnable(){ public void run()
{ System.out.println( "alpha" ); }},
"gamma", new Runnable(){ public void run()
{ System.out.println( "gamma" ); }}).
by( args[ 0 ]); }}