Esempio:
public class Outer {
public interface Bar {
Bar get();
}
}
Bar è un'interfaccia nidificato. interfacce nidificati sono statici di default, quindi si potrebbe anche scrivere:
public class Outer {
public static interface Bar {
Bar get();
}
}
Ora, che cosa statica, in questo contesto significa che l'interfaccia è un membro statico, vale a dire un membro della classe.
È possibile farlo con le classi così:
public class Tree {
private static class Node {
}
}
Qui, nodo è anche privata, che significa che è visibile solo all'interno dell'albero. Quindi, qual è il vantaggio di questo? Perché non rendere Node una classe pubblica? A causa di un migliore incapsulamento. Innanzitutto, il nodo è un dettaglio di implementazione dell'albero, quindi non vuoi che sia visibile. In secondo luogo, se si espone il nodo tramite un'API pubblica, alcuni client (programmatori) potrebbero usarlo nel suo codice. Ora, ha una dura dipendenza da questa classe. Se a un certo punto si desidera modificare la rappresentazione di You Tree e si modifica/rimuove la classe Node, il codice del client potrebbe interrompersi. E, ultimo ma non meno importante, la tua API pubblica diventa più piccola, che è anche auspicabile.
Quindi, quando utilizzare classi membro/interfacce statiche? Principalmente, se costruisci una sorta di oggetto composito (come un albero o un elenco collegato) o quando la classe ha senso solo nel contesto della classe esterna.
StackOverflow è di circa domande ... qual è la tua domanda? –