Java Pro Tips: Truques raros para sobrecarregar sua programação
Descubra técnicas raras e poderosas para melhorar seu código Java, desde a inicialização com colchetes duplos até classes opcionais e muito mais
Neste artigo, exploraremos algumas das raras e poderosas dicas e truques que podem ajudá-lo a liberar todo o potencial do Java e criar um código elegante e eficiente.
De interfaces funcionais e referências de método à API de fluxo e classe opcional, abordaremos alguns dos recursos avançados do Java que geralmente são negligenciados, mas que podem melhorar significativamente sua experiência de programação.
Então, vamos mergulhar e liberar todo o poder do Java!
Inicialização de chaves duplas
Essa técnica permite criar uma instância de uma classe e inicializar seus valores usando uma única instrução. Envolve a criação de uma classe interna anônima e o uso de um bloco inicializador de instância para inicializar as variáveis de instância.
Map<String, String> myMap = new HashMap<String, String>() {{
put("key1", "value1");
put("key2", "value2");
}};
Esse recurso foi introduzido no Java 7 e permite usar sublinhados para separar grupos de dígitos em literais numéricos para melhor legibilidade.
int million = 1_000_000;
long creditCardNumber = 1234_5678_9012_3456L;
double pi = 3.14_15_92_65;
Esse recurso foi introduzido no Java 7 e permite fechar automaticamente recursos como fluxos, arquivos e conexões de banco de dados ao final de um bloco try, eliminando a necessidade de um bloco final.
try (FileInputStream fis = new FileInputStream("myfile.txt");
BufferedInputStream bis = new BufferedInputStream(fis)) {
// code that uses fis and bis
} catch (IOException e) {
// handle exception
}
Você pode usar um enum em Java para implementar o padrão de design Singleton. Os valores de enum são instanciados apenas uma vez quando o enum é acessado pela primeira vez, tornando-o thread-safe.
public enum Singleton {
INSTANCE;
// methods and instance variables
}
As expressões lambda foram introduzidas no Java 8 e permitem que você escreva um código mais conciso e legível para construções de programação funcional, como fluxos e coleções.
List<String> names = Arrays.asList("John", "Mary", "Bob");
names.forEach(name -> System.out.println(name));
As interfaces funcionais são interfaces que possuem apenas um método abstrato e são usadas para definir expressões lambda. Você pode usar a @FunctionalInterfaceanotação para garantir que uma interface seja uma interface funcional e obter um erro de tempo de compilação se não for.
@FunctionalInterface
public interface MyInterface {
void doSomething();
}
As referências de método permitem que você se refira a um método sem invocá-lo. Você pode usar o ::operador para criar uma referência de método. Existem quatro tipos de referências de método: estático, instância, construtor e instância arbitrária.
List<String> names = Arrays.asList("John", "Mary", "Bob");
names.forEach(System.out::println);
A Stream API é um recurso poderoso introduzido no Java 8 que permite processar coleções de dados de maneira funcional. Você pode usar uma variedade de operações, como filtrar, mapear, reduzir e coletar para processar os dados.
List<String> names = Arrays.asList("John", "Mary", "Bob");
long count = names.stream()
.filter(name -> name.length() < 4)
.count();
A classe Optional é usada para representar um valor que pode ou não estar presente. Você pode usar métodos como isPresent(), get()e orElse()para trabalhar com objetos opcionais.
Optional<String> name = Optional.ofNullable(getName());
if (name.isPresent()) {
System.out.println("Hello, " + name.get());
} else {
System.out.println("Hello, stranger");
}
O Diamond Operator permite que você omita os argumentos de tipo ao criar uma nova instância de uma classe genérica, desde que o tipo possa ser inferido a partir do contexto.
Map<String, List<String>> myMap = new HashMap<>();
Continue explorando, continue aprendendo e continue codificando!
Em minhas contas do Twitter e Instagram , frequentemente compartilho minha jornada de programação e experiências de desenvolvimento.
Obrigado por ler :)





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)