palavra-chave padrão em Java
A palavra-chave default
em Java tem vários usos, principalmente em instruções switch e métodos de interface. Ele fornece um caso padrão em instruções switch e permite que os métodos em interfaces tenham uma implementação padrão.
Uso
1. Caso padrão em instruções Switch
Em uma instrução switch, a palavra-chave default
especifica o bloco de código a ser executado se nenhum case corresponder à expressão switch.
2. Métodos padrão em interfaces
Nas interfaces, a palavra-chave default
permite a criação de métodos com uma implementação padrão. Esse recurso, introduzido no Java 8, permite que as interfaces evoluam sem quebrar as implementações existentes.
Sintaxe
Declaração de troca
switch (expression) {
case value1:
// code block
break;
case value2:
// code block
break;
default:
// default code block
}
Métodos padrão em interfaces
public interface InterfaceName {
default void methodName() {
// default implementation
}
}
Exemplos
Exemplo 1: Caso padrão na instrução Switch
public class DefaultSwitchExample {
public static void main(String[] args) {
int day = 5;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
// other cases
default:
System.out.println("Invalid day");
break;
}
}
}
Neste exemplo, o caso default
é executado se o valor de day
não corresponder a nenhum dos casos especificados.
Exemplo 2: Método padrão na interface
public interface MyInterface {
default void display() {
System.out.println("Default display method");
}
}
public class DefaultMethodExample implements MyInterface {
public static void main(String[] args) {
DefaultMethodExample example = new DefaultMethodExample();
example.display(); // Calls the default method
}
}
Aqui, a interface MyInterface
tem um método padrão display()
. A classe DefaultMethodExample
implementa essa interface, mas não substitui o método display()
, portanto, a implementação padrão é usada.
Exemplo 3: Substituição do método padrão
public interface MyInterface {
default void display() {
System.out.println("Default display method");
}
}
public class OverrideDefaultMethodExample implements MyInterface {
@Override
public void display() {
System.out.println("Overridden display method");
}
public static void main(String[] args) {
OverrideDefaultMethodExample example = new OverrideDefaultMethodExample();
example.display(); // Calls the overridden method
}
}
Neste exemplo, a classe OverrideDefaultMethodExample
substitui o método padrão display()
fornecido pela interface MyInterface
.
Dicas e práticas recomendadas
- Trocar declarações: Sempre inclua um
default
case nas instruções switch para lidar com valores inesperados. - Evolução da interface: Use métodos padrão em interfaces para adicionar novos métodos sem interromper as implementações existentes.
- Manipulação de herança múltipla: Quando várias interfaces têm métodos padrão com o mesmo nome, a classe de implementação deve resolver a ambiguidade substituindo o método.
- Substituir com cuidado: Quando você substituir os métodos padrão, certifique-se de que a nova implementação não rompa o contrato existente da interface.
- Documentação: Documente claramente o comportamento dos métodos padrão para evitar confusão para os usuários da interface.