In dem FAQ-Artikel "Arten von Klassen" fehlt ein Beispiel für innere statische Klassen. Die Klassen verhalten sich wie Top-Level-Klassen und erleichtern manchmal logisch zusammenhängende Klassen auch an der gleichen Stelle zu speichern. Hier ein abgespecktes Beispiel aus meinem aktuellen Projekt:
Die Boolean-Klassen können dann folgendermaßen verwendet werden.
Der Code stammt aus einer Formatierung von SQL-Ausdrücken.
Java:
/**
* Boolean conditions.
*/
class Boolean extends Condition
{
String operator;
Boolean (String operator)
{
this.operator = operator;
}
/**
* Boolean conditions with one argument.
*/
static class Unary extends Boolean
{
Condition a;
Unary (String operator, Condition a)
{
super (operator);
this.a = a;
}
}
/**
* Boolean conditions with two arguments.
*/
static class Binary extends Boolean
{
Condition a;
Condition b;
Binary (String operator, Condition a, Condition b)
{
super (operator);
this.a = a;
this.b = b;
}
}
}
Die Boolean-Klassen können dann folgendermaßen verwendet werden.
Java:
new Boolean.Unary ("NOT", a);
new Boolean.Binary ("AND", a, b);
new Boolean.Binary ("OR", a, b);
Der Code stammt aus einer Formatierung von SQL-Ausdrücken.