Já comentei de algumas novidades do Java 7, mas não posso deixar de falar sobre o seu novo try capaz de gerenciar o encerramento automático de recursos.
Em versões anteriores ao Java 7, quando um recurso é construído e aberto (como ocorre com arquivos, conexões de banco de dados e sockets) algumas linhas de códigos a mais são necessárias para em caso de erro ainda garantir o fechamento adequado do recurso para não deixá-lo aberto ad eternum na memória do aplicativo.
Exemplo 1 - Teste do antigo try
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TestaOldTry {
public static void main(String[] args) {
FileReader fileReader = null;
BufferedReader bufferReader = null;
try {
fileReader = new FileReader("c:/temp/datafile.txt");
bufferReader = new BufferedReader(fileReader, 1024);
String record = null;
while ((record = bufferReader.readLine()) != null) {
System.out.println(record);
}
} catch(IOException e) {
System.out.println(String.format("Falha ao ler arquivo: %s", e.getMessage()));
} finally {
if (bufferReader != null) {
try {
bufferReader.close();
} catch(IOException e) {
System.out.println("Falha ao fechar bufferReader: " + e.getMessage());
}
}
if (fileReader != null) {
try {
fileReader.close();
} catch(IOException e) {
System.out.println("Falha ao fechar fileReader: " + e.getMessage());
}
}
}
}
}
Observe o cuidado e excessividade de códigos empregados para garantir o fechamento dos recursos bufferReader e fileReader no bloco finally.
Eis a novidade...
No Java 7 foi incorporado um try opcional para gerenciar automaticamente o encerramento de recursos. Para isso ocorrer, é necessário conferir se a classe do recurso implementa a nova interface java.lang.AutoCloseable ou a interface java.io.Cloaseable, senão o novo try não funciona logo na compilação. Este comportamento impede o programador para não se esquecer de programar um método de encerramento no recurso a ser automaticamente encerrado pelo novo try.
Agora vamos ver como fica a utilização do novo try, também conhecido por try-with-resources.
Exemplo 2 - Teste do novo try
public class TestaNewTry {
public static void main(String[] args) {
try (FileReader fileReader = new FileReader("c:/temp/datafile.txt");
BufferedReader bufferReader = new BufferedReader(fileReader, 1024)) {
String record = null;
while ((record = bufferReader.readLine()) != null) {
System.out.println(record);
}
} catch(IOException e) {
System.out.println(String.format("Falha ao ler arquivo: %s", e.getMessage()));
}
}
}
Este novo código revela um algoritmo bem menor e ainda traz o mesmo efeito do algoritmo do primeiro exemplo.
O objetivo com este novo try é certamente reduzir o número de códigos de sua programação Java para torná-la mais produtiva.
Até mais.
Nenhum comentário:
Postar um comentário