Classe aninhada
O Java te permite definir uma classe dentro de outra. Exemplo:
class ClasseExterna {
...
class ClasseAninhada {
...
}
}
Enter fullscreen mode Exit fullscreen mode
Classes aninhadas te permitem ter lógica de grupo de classes que vocês está utilizando em um único lugar, o ponto positivo é que esse tipo de recurso aumento o encapsulamento, cria um código mais legível e melhora a manutenção do código.
Já as classes locais, classes anônimas e expressões lambdas também dão os mesmo benefícios, porém são recomendadas para usos mais específicos.
Classe local
Classes locais são aquelas que você define dentro do bloco. Você normalmente encontra classes locais definidas dentro de corpo de métodos.
public class ExemploClasseLocal {
static String regularExpression = "[^0-9]";
//Método que precisamos
public static void validarTelefone(
String telefone1, String telefone2) {
final int tamanhoTelefone = 10;
//Criamos uma classe para poder implementar a lógica de validação do telefone
class NumeroTelefone {
String numeroTelefoneFormatado = null;
PhoneNumber(String numeroTelefone){
String numeroAtual = numeroTelefone.replaceAll(
regularExpression, "");
if (numeroAtual.length() == tamanhoTelefone)
numeroTelefoneFormatado = numeroAtual;
else
numeroTelefoneFormatado = null;
}
public String getNumero() {
return numeroTelefoneFormatado;
}
NumeroTelefone numero1 = new NumeroTelefone(telefone1);
NumeroTelefone numero2 = new NumeroTelefone(telefone2);
if (numero1.getNumero() == null)
System.out.println("Primeiro número é inválido");
else
System.out.println("Primeiro número é " + numero1.getNumero());
if (numero2.getNumber() == null)
System.out.println("Segundo número é inválido");
else
System.out.println("Segundo número é " + numero2.getNumero());
}
//Chamando o nosso método de validação de telefone
public static void main(String... args) {
validarTelefone("123-456-7890", "456-7890");
}
}
Enter fullscreen mode Exit fullscreen mode
Use caso você precise criar mais de uma instância da classe, acessar seu construtor ou criar um novo.
Classe Anônima
Use caso você precise declarar campos ou adicionar métodos.
Expressão Lambda
Use caso você esteja encapsulando um único comportamento que você quer passar para outro trecho de código. Por exemplo, você pode usar expressão lambda se você quer que determinada ação performe em cada elemento de uma collection quando o processo está completo ou quando o processo encontra algum erro.
Você também pode usar caso precise de uma única instância de uma interface funcional e você não precisa de nada muito completo (exemplo: você não precisa de construtor, um nome tipado, campos ou métodos adicionais).
Fonte traduzida livremente: https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html
原文链接:Quando usar Classes aninhadas, classes locais, classes anônimas e expressões lambdas
暂无评论内容