Se construção na chamada hashmap.put
Pergunta
Eu tenho uma variável do tipo Hashmap<String,Integer
>.
Neste, o valor inteiro pode ter que ir alguma manipulação, dependendo do valor de uma variável de sinalizador. Eu fiz isso assim ...
Hashmapvariable.put( somestring,
if (flag_variable) {
//manipulation code goes here
new Integer(manipulated value);
} else {
new Integer(non-manipulated value);
}
);
Mas eu recebo um erro:
Erro de sintaxe na ficha (s), extraviado construções.
na chamada Hashmapvariable.put.
Eu também obter outro erro
Erro de sintaxe no token ")", elimine este token.
no final ");" linha. Mas eu não posso excluir a ")." - seus os parênteses de fechamento para a chamada de método put
Eu não entendo isso. O erro que eu estou fazendo?
Solução
Você não pode colocar uma declaração na chamada do método.
No entanto, uma opção poderia ser a de fazer um método que retorna um Integer
tais como:
private Integer getIntegerDependingOnFlag(boolean flag)
{
if (flag)
return new Integer(MANIPULATED_VALUE);
else
return new Integer(NON-MANIPULATED_VALUE);
}
Em seguida, você pode fazer uma chamada como esta:
hashmap.put(someString, getIntegerDependingOnFlag(flag));
Outras dicas
new Integer(flag_variable ? manipulated value : non-manipulated value)
Será que o truque
Edit: Em Java 5, suponho que você também pode escrever
hashmap.put(someString, flag_variable ? manipulated value : non-manipulated value)
devido à auto-boxing.
Este não é esquema, por isso, se as declarações não avaliam para um valor. Você terá que usar uma coisa tri se-(o nome me escapa, por algum motivo agora) ou criar uma função, como alguém disse.