Símbolo de anotação @ em Java

Bishal Awasthi 12 outubro 2023
  1. a anotação @Override em Java
  2. a anotação @SuppressWarnings em Java
  3. a anotação @Deprecated em Java
Símbolo de anotação @ em Java

Este artigo apresentará o símbolo @, que é chamado de anotações em Java. Vamos nos concentrar em anotações Java integradas como @Override, @SuppressWarnings e @Deprecated.

a anotação @Override em Java

A anotação é uma forma de indicar as informações extras anexadas a uma classe, interface e método em Java. O compilador Java e a JVM usam as informações fornecidas com o uso de anotações. Uma anotação começa com o símbolo @. A anotação @Override garante que o método da classe filha substitua o método da classe pai. É uma anotação de marcador porque não possui nenhum valor ou elemento. Quando usamos a anotação @Override, o compilador irá gerar erros e nos avisar se houver algum erro ao sobrescrever o método. Os prováveis ​​erros que verifica são os erros ortográficos e os erros de argumento e tipo de retorno. Podemos demonstrar o uso da anotação @Override criando uma herança. Em primeiro lugar, não vamos usar a anotação, mas depois vamos usá-la para demonstrar como funciona @Override.

Por exemplo, crie uma classe Parent e escreva um método message() com um tipo de retorno void. Imprima algumas mensagens dentro do método. Da mesma forma, crie outra classe, Child, e estenda a classe Parent. Crie o mesmo método mensagem com o tipo void e escreva uma mensagem dentro dele. Antes do método, escreva a anotação @Override. Então, dentro da classe principal, crie objetos de cada uma das classes e chame o método message().

Aqui, a subclasse herda a superclasse e cada um dos métodos em cada classe é invocado sem nenhum problema.

Código de exemplo:

class Annotation {
  public static void main(String[] args) {
    new Child().message();
    new Parent().message();
  }
}

class Parent {
  void message() {
    System.out.println("Invoked from the Parent class");
  }
}

class Child extends Parent {
  @Override
  void message() {
    System.out.println("Invoked from the Child class");
  }
}

Produção:

Invoked from the Child class
Invoked from the Parent class

Modifique o método message() na classe Child para mesage(). Em seguida, execute o programa. Ele mostra a seguinte saída.

Produção:

Annotation.java:18: error: method does not override or implement a method from a supertype

Aqui, mudamos o nome do método. Às vezes, o programador pode cometer esses tipos de erros enquanto os substitui. Assim, a anotação @Override garante qualquer erro enquanto sobrescreve um método e alerta o programador.

a anotação @SuppressWarnings em Java

A anotação @SuppressWarnings diz ao compilador para suprimir ou ignorar o erro para a parte especificada do código. Podemos usar a anotação para um tipo, campo, método, parâmetro, construtor e variável local. Podemos especificar o valor unchecked entre os parênteses da anotação como @SuppressWarnings("unchecked") para suprimir o erro. Quando usamos a anotação antes da classe, ela suprime quaisquer erros dentro da classe. E quando o usamos antes de qualquer método dentro de uma classe, ele apenas suprimirá o erro daquela classe em particular.

Por exemplo, importe o pacote util e crie uma classe chamada Annotation. Escreva @SuppressWarnings("unchecked") antes do método main. Dentro do método main, crie uma instância de ArrayList() e atribua-a à variável fruits. Em seguida, adicione os valores apple e mango com o método add(). Finalmente, imprima a variável fruits.

No exemplo abaixo, importamos tudo do pacote util. Ele importa a classe ArrayList que usaremos posteriormente. O código acima é executado com sucesso, embora haja um erro. Usamos a coleção não genérica ArrayList. Não especificamos o tipo dentro de um símbolo <>. Portanto, o código está com defeito. Mas é executado porque suprimimos o erro usando a anotação @SuppressWarnings.

Código de exemplo:

import java.util.*;
class Annotation {
  @SuppressWarnings("unchecked")
  public static void main(String args[]) {
    ArrayList fruits = new ArrayList();
    fruits.add("apple");
    fruits.add("mango");
    System.out.println(fruits);
  }
}

Produção:

[apple, mango]

Se não usarmos a anotação para o código a seguir, o compilador mostrará o seguinte erro.

Produção:

Note: Annotation.java uses unchecked or unsafe operations.

a anotação @Deprecated em Java

A anotação @Deprecated é usada para denotar o trecho de código especificado como código obsoleto. O compilador mostrará um aviso de depreciação quando usarmos a anotação. Podemos anotar um tipo, método, campo e construtor usando a anotação @Deprecated.

Por exemplo, crie uma classe Car e crie um construtor com os parâmetros color, length e width. Use a anotação @Deprecated antes do construtor. Deixe o corpo vazio. Crie outro construtor e escreva nele um parâmetro de string name. Crie outra classe, Annotation, e dentro do método main, chame esses dois construtores.

No exemplo abaixo, usamos as anotações @Deprecated antes do primeiro construtor. Ele permite que o compilador gere um aviso informando que o construtor está obsoleto. Dessa forma, podemos usar a anotação para especificar algo que está obsoleto no código. A remoção do código obsoleto não é incentivada porque pode ser usada para reverter para versões anteriores, se necessário. A nova alternativa é encorajada a ser usada nesses casos.

Código de exemplo:

class Annotation {
  public static void main(String args[]) {
    new Car("red", 550, 300);
    new Car("Lambo");
  }
}
class Car {
  @Deprecated
  Car(String color, int length, int width) {}
  Car(String name) {}
}

Produção:

Note: Annotation.java uses or overrides a deprecated API.

Artigo relacionado - Java Annotation