Operadores Ternários Java

Existe uma maneira de implementar isso em uma operação ternária. Eu sou muito novo nesse material ternário, talvez você possa me guiar.

if(selection.toLowerCase().equals("produkt")) cmdCse.setVisible(true); else cmdCse.setVisible(false); 

Este não parece funcionar.

 selection.toLowerCase().equals("produkt")?cmdCse.setVisible(true):cmdCse.setVisible(false); 

Nesse caso, você nem precisa de um operador ternário:

  cmdCse.setVisible(selection.toLowerCase().equals("produkt")); 

Ou mais limpo:

  cmdCse.setVisible(selection.equalsIgnoreCase("produkt")); 

Sua versão:

 selection.toLowerCase().equals("produkt")? cmdCse.setVisible(true): cmdCse.setVisible(false); 

está semanticamente incorreto: o operador ternário deve representar atribuições alternativas , não é uma substituição completa para instruções if . Está tudo bem

 double wow = x > y? Math.sqrt(y): x; 

porque você está atribuindo x ou Math.sqrt(y) para wow , dependendo de uma condição .

Meus 2cents: use o operador ternário somente quando ele tornar seu programa mais claro, caso contrário, você terá alguns one-liners indecifráveis.

Possivelmente

 cmdCse.setVisible(selection.toLowerCase().equals("produkt")); 

O operador ternário não é exatamente como uma declaração if. Um operador ternário precisa “retornar” algo de ambos os lados, portanto, colocar chamadas de método vazias como setVisible () não funcionará.

Em vez disso, você poderia fazer algo assim sem operadores ternários:

 cmdCse.setVisible(selection.toLowerCase().equals("product")); 

Mas apenas para demonstrar o ponto, o equivalente ternário seria algo como isto:

 cmdCse.setVisible(selection.toLowerCase().equals("product") ? true : false); 

Observe como agora o operador ternário “retorna” verdadeiro ou falso em ambos os lados, em vez de simplesmente chamar um método vazio.

Eu acho que isso vai funcionar para você

 cmdCse.setVisible(selection.toLowerCase().equals("produkt")); 

Diretamente dos docs

Use o operador?: Em vez de uma instrução if-then-else se ele tornar seu código mais legível; por exemplo, quando as expressões são compactas e sem efeitos colaterais (como atribuições).

No seu caso, cmdCse.setVisible(true / false); não retorna nada, e a operação também tem efeitos colaterais (muda o estado de cmdCse ), então o operador condicional não pode ser usado aqui (quando você usa o operador, ambos os ramos ? e : devem ter o mesmo tipo de retorno) ).

Como um aparte, por favor note que .. ? .. : .. .. ? .. : .. deve ser referido como o conditional operator

Aqui estão as minhas dicas, se você precisa definir as coisas como booleanas, então use setBoolean (condition), senão, se você precisa definir uma variável como um valor não booleano, então use var = condition? Result1: result2 (ou a variável se você não quer mudar se a condição for falsa), caso contrário, use if else.