Linha de Código Android

Galera, sou novato em desenvolvimento Android e me deparei com uma linha de código assim:
int animar = visivel ? android.R.anim.fade_out : android.R.anim.fade_in; Animation a = AnimationUtils.loadAnimation(this, anim); animation(a);

A minha dúvida é:
O que essa linha abaixo faz?

visivel ? android.R.anim.fade_out : android.R.anim.fade_in

Isto é uma expressão como se fosse um (if, else). (Porém se usa apenas para retorno de informações)
Por exemplo:

if (visivel) {
return android.R.anim.fade_out;
} else {
return android.R.anim.fade_in;
}

Neste caso significa apenas que:

int animar (true) ? se verdadeiro retona o que esta aqui : se nao o que esta aqui;
int animar = (visivel) ? android.R.anim.fade_out : android.R.anim.fade_in;

Abraços!

SuperMock

1 curtida

Isso eh uma operacao ternaria (link)

Caso a variavel “visivel”, que eh um boolean, for true, entao executa o android.R.anim.fade_out, se for falso, executa o android.R.anim.fade_in.

Seria o mesmo que

if (visivel) {
  android.R.anim.fade_out;
} else {
  android.R.anim.fade_in;
}
1 curtida

Obrigado pela resposta super rápida.
Então o “?” significa uma validação de “true” ou “false”.
Enquanto o primeiro parametro do “:” significa o mesmo que o “if” e o segundo o mesmo que o “else” ?
Ficou difícil escolher a melhor resposta pois todas responderam minha dúvida.

A estrutura básica desta comparação é assim:

boolean resultado = ((condição) ? true : false)

Pense nisso como uma pergunta e resposta!

((Dois é igual a um) ? “é igual” : “não é igual”);

Abraços

SuperMock

1 curtida

Entendido.
Obrigado pela explicação.
Quebrou uma árvore agora. =D