Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não vi vantagem no import static

Tenho os seguintes códigos de exemplos:

import java.util.Comparator;

        palavras.sort(Comparator.comparing(String::length));
        palavras.forEach(System.out::println);
import static java.util.Comparator.comparing;

        palavras.sort(comparing(String::length));
        palavras.forEach(System.out::println);

Ao que eu entendi, o import static serviria para deixar o código ainda mais enxuto, porém, não vi sentido nisso e explico. No caso do primeiro exemplo fica explícito que o método comparing vem da interface comparator, como eu não sei quem vai ler o meu código e muito menos sei o nível de conhecimento, acredito que esse tipo de informação seja útil. No segundo exemplo, em tese o código está mais enxuto, porém, para que eu não precise escrever o nome da interface eu tenho que adicionar duas palavras no import, lembrando que esse import não é feito com o atalho ctrl+shift+o como os imports normais são, pelo menos não na minha versão do Eclipse, logo, eu vejo que não há economia no número de caracteres do código, o código perde explicitude da origem do método comparing utilizado e acaba sendo um código que exige mais do conhecimento prévio do leitor, ao meu entender o código só ficou maior, mais trabalhoso e mais complexo. Caso alguém tenha alguma visão diferente, por favor diga, estou curioso sobre esse assunto.

1 resposta
solução!

No quesito de limpeza de código, há muitas outras práticas mais importantes do que essa, entretanto, uma importação "static" é muito útil para deixar enxuto algumas chamadas. Acredito que a chamada do Comparator não seja um bom exemplo, talvez poderiamos dar de exemplo o Objects.isNull(), que tem potencial de ser chamado dezenas de vezes, e tem seu nome explicito, mesmo em static. Veja o exemplo:

if(Objects.isNull(exemplo)) { }

vs 

if(isNull(exemplo)){ }