Una guida alle interfacce interne in Java

1. Introduzione

In questo breve tutorial, esamineremo le interfacce interne in Java. Sono utilizzati principalmente per:

  • risolvere il problema dello spazio dei nomi quando l'interfaccia ha un nome comune
  • aumento dell'incapsulamento
  • aumentare la leggibilità raggruppando le interfacce correlate in un unico punto

Un esempio ben noto è l' interfaccia Entry , dichiarata all'interno dell'interfaccia Map . Definita in questo modo, l'interfaccia non è in ambito globale ed è referenziata come Map.Entry differenziandola dalle altre interfacce Entry e rendendo evidente la sua relazione con Map .

2. Interfacce interne

Per definizione, la dichiarazione di un'interfaccia interna si verifica nel corpo di un'altra interfaccia o classe.

Sono implicitamente pubblici e statici così come i loro campi quando dichiarati in un'altra interfaccia (simile alle dichiarazioni di campo nelle interfacce di primo livello) e possono essere implementati ovunque:

public interface Customer { // ... interface List { // ... } }

Anche le interfacce interne dichiarate all'interno di un'altra classe sono statiche , ma possono avere specificatori di accesso che possono vincolare dove possono essere implementate:

public class Customer { public interface List { void add(Customer customer); String getCustomerNames(); } // ... }

Nell'esempio sopra, abbiamo un'interfaccia List che servirà per dichiarare alcune operazioni sulla lista dei clienti come l'aggiunta di nuovi, ottenere una rappresentazione di stringa e così via.

List è un nome prevalente e per lavorare con altre librerie che definiscono questa interfaccia, abbiamo bisogno di separare la nostra dichiarazione, cioè lo spazio dei nomi .

Qui è dove utilizziamo un'interfaccia interna se non vogliamo andare con un nuovo nome come CustomerList.

Abbiamo anche tenuto insieme due interfacce correlate che migliorano l'incapsulamento.

Infine, possiamo continuare con un'implementazione di esso:

public class CommaSeparatedCustomers implements Customer.List { // ... }

3. Conclusione

Abbiamo dato una rapida occhiata alle interfacce interne in Java.

Come sempre, è possibile trovare esempi di codice su GitHub.