Switch de Strings

Opa pessoal,

Jah sei que no java não tem switch de String, daí eu tava pensando em fazer usando o hashcode, eu só não sei como conseguir o hash code dos casos a serem testados sem ser manualmente?

Alguem tem exemplo de um switch de string?

VELO

Hm, o melhor seria vc usar if()s mesmo. De qualquer maneira, a titulo de curiosidade, vc pode fazer algo esdruxulo como

public class Teste {
	private void testa(String s) {
		final int hash1 = -823818259;
		final int hash2 = -823818258;

		switch (s.hashCode()) {
			case hash1:
				System.out.println("case do valor 1");
				break;
			case hash2:
				System.out.println("case do valor 2");
				break;
			default:
				System.out.println("Nenhuma opcao");
				break;
		}
	}

	public static void main(String[] args) 
	{
		Teste t = new Teste();
		t.testa("valor1");
		t.testa("xxx");
	}
}

Rafael

String s = "GUJ";

switch (s) {
 case s.equals("GU"):
    System.out.println("GU");
     break;
 case s.equals("GUJ"):
    System.out.println("GGGGUUUJJJJ");
     break;
 default:
    System.out.println("Num deu.. :-(");
     break;
}

isso nao funcionaria :?:
*nao testei…

Bom resolvi testar e vi que nao funcionar… tá ai uma coisa que eu não sabia, não tem como fazer um switch em uma String… :oops: bom mas se nao da com o switch usa o if :smiley: , foi mal ae ter atrapalhado :wink: valeu ? falou’s…

Putz…

Toh vendo que eu vou usar um monte de if´s mesmo…

switch não me parece ser uma coisa que vai funcionar…

VELO

Duas strings diferentes podem ter o mesmo hashcode.
Portanto isso não muito apropriado para um “switch” (uma string que deveria cair no caso “default” cai em outro caso diferente).

Eu imaginei isso tbm…

Aih, vamo desenvolver uma API q faça switch de String e vamu submetar a sun, kkkkkkkk

VELO

Se você olhar o livro de certificação Java da QUE para SCJP, vai ver um “quebra-galho” que o escritor desse livro inventou para ter uma espécie de “switch” com strings. É meio desajeitado e esquisito, parece que o escritor do livro tinha o costume de usar muito a linguagem C, porque tem uma filosofia semelhante à de macros.

Afff, num tenho nem ideia que livro eh esse…

Vc naum teria como fazer a caridade de postar o codigo aqui, teria ?! :roll:

Bom, é um livro da série “Exam Cram”, mas não estou com ele aqui. O código é meio grandinho, e na verdade eu acho melhor ler um código com um monte de “if (“string1”.equals(var) { … } else if (“string2”.equals(var) { … } else { …}” em vez de ler o código que o cara escreveu. Fica realmente meio esquisito…

.

Ouvi dizer que vai ter (ou que eles estavam cogitando) switch de Strings pro java7:D