Item 41: Use as interfaces marcadoras para definir tipos

Definição e Propósito
Interface Marcadora:

Não contém declarações de métodos.
Marca uma classe como tendo uma propriedade específica.
Exemplo: Serializable indica que uma classe pode ser serializada.
Vantagens das Interfaces Marcadoras

Definição de…


This content originally appeared on DEV Community and was authored by Mulher Programadora

Definição e Propósito
Interface Marcadora:

  • Não contém declarações de métodos.
  • Marca uma classe como tendo uma propriedade específica.
  • Exemplo: Serializable indica que uma classe pode ser serializada.
  • Vantagens das Interfaces Marcadoras

Definição de Tipo:

  • Interfaces marcadoras definem um tipo que as instâncias de uma classe implementam.
  • Permite detecção de erros em tempo de compilação.

Exemplo:

public class MyClass implements Serializable {
    // Implementação
}

Verificação em Tempo de Compilação:

  • O uso de interfaces marcadoras permite que erros sejam detectados durante a compilação.

Exemplo com Serializable:

ObjectOutputStream.writeObject(myObject); // Garante que myObject seja Serializable

Precisão na Marcação:

  • Interfaces marcadoras podem ser aplicadas com precisão a subtipos específicos.

Exemplo:

public interface MyMarkerInterface extends MySpecificInterface {
    // Sem métodos adicionais
}

Exemplos de Uso

Serializable:

  • Indica que uma classe pode ser serializada.

Exemplo:

public class Person implements Serializable {
    private String name;
    private int age;
    // Getters, setters, etc.
}

Interface Set como Marcadora Restrita:

  • Aplica-se apenas a subtipos de Collection, mas não adiciona métodos além dos definidos por Collection.
  • Refina contratos de métodos como add, equals e hashCode.
  • Comparação com Anotações Marcadoras

Anotações Marcadoras:

  • Podem ser aplicadas a mais elementos do programa (classes, interfaces, métodos, etc.).

Exemplo:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyMarkerAnnotation {
}

@MyMarkerAnnotation
public class MyClass {
    // Implementação
}

Quando usar Interface Marcadora vs. Anotação Marcadora:

  • Use interface marcadora se:
  • A marcação deve definir um tipo.
  • Pode querer escrever métodos que aceitem apenas objetos com essa marcação.

Use anotação marcadora se:

  • A marca se aplica a elementos que não sejam classes ou interfaces.
  • Faz parte de um framework que usa intensamente anotações.

Vantagens das Anotações Marcadoras

  • Consistência em Frameworks:
  • Facilita a consistência em frameworks baseados em anotações.

Exemplo:

@MyFrameworkAnnotation
public class MyClass {
    // Implementação
}

Decisão de Uso
Para definir um tipo:

  • Use uma interface marcadora.
  • Para marcar elementos que não sejam classes ou interfaces:
  • Use uma anotação marcadora.

Parte de um framework baseado em anotações:
Use uma anotação marcadora.

Exemplo Final

  • Interface Marcadora:
public interface MyTypeMarker {
}

public class MyClass implements MyTypeMarker {
    // Implementação
}

public void process(MyTypeMarker obj) {
    // Processa apenas objetos marcados com MyTypeMarker
}

Anotação Marcadora:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotationMarker {
}

@MyAnnotationMarker
public class MyClass {
    // Implementação
}

Resumo

  • Interfaces marcadoras são usadas para definir tipos sem métodos adicionais.
  • Anotações marcadoras são usadas para marcar elementos de programa de forma ampla.
  • A escolha depende do contexto e do objetivo da marcação.


This content originally appeared on DEV Community and was authored by Mulher Programadora


Print Share Comment Cite Upload Translate Updates
APA

Mulher Programadora | Sciencx (2024-07-11T19:50:46+00:00) Item 41: Use as interfaces marcadoras para definir tipos. Retrieved from https://www.scien.cx/2024/07/11/item-41-use-as-interfaces-marcadoras-para-definir-tipos/

MLA
" » Item 41: Use as interfaces marcadoras para definir tipos." Mulher Programadora | Sciencx - Thursday July 11, 2024, https://www.scien.cx/2024/07/11/item-41-use-as-interfaces-marcadoras-para-definir-tipos/
HARVARD
Mulher Programadora | Sciencx Thursday July 11, 2024 » Item 41: Use as interfaces marcadoras para definir tipos., viewed ,<https://www.scien.cx/2024/07/11/item-41-use-as-interfaces-marcadoras-para-definir-tipos/>
VANCOUVER
Mulher Programadora | Sciencx - » Item 41: Use as interfaces marcadoras para definir tipos. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/07/11/item-41-use-as-interfaces-marcadoras-para-definir-tipos/
CHICAGO
" » Item 41: Use as interfaces marcadoras para definir tipos." Mulher Programadora | Sciencx - Accessed . https://www.scien.cx/2024/07/11/item-41-use-as-interfaces-marcadoras-para-definir-tipos/
IEEE
" » Item 41: Use as interfaces marcadoras para definir tipos." Mulher Programadora | Sciencx [Online]. Available: https://www.scien.cx/2024/07/11/item-41-use-as-interfaces-marcadoras-para-definir-tipos/. [Accessed: ]
rf:citation
» Item 41: Use as interfaces marcadoras para definir tipos | Mulher Programadora | Sciencx | https://www.scien.cx/2024/07/11/item-41-use-as-interfaces-marcadoras-para-definir-tipos/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.