Gibt es so etwas wie "Statische Klassen" in Java?
Was ist die Bedeutung einer solchen Klasse? Müssen alle Methoden der statischen Klasse auch "statisch" sein?
Ist es umgekehrt erforderlich, dass eine Klasse, die alle statischen Methoden enthält, auch statisch sein muss?
Wozu sind statische Klassen gut?
Nun, Java hat "statische verschachtelte Klassen", aber die sind überhaupt nicht dasselbe wie die statischen Klassen von C#, falls Sie das meinen. Eine statische verschachtelte Klasse ist nur eine, die nicht implizit einen Verweis auf eine Instanz der äußeren Klasse hat.
Statische verschachtelte Klassen können Instanzmethoden und statische Methoden haben.
In Java gibt es so etwas wie eine statische Klasse auf oberster Ebene nicht.
Es gibt eine statische verschachtelte Klasse, diese [statische verschachtelte] Klasse benötigt keine Instanz der umschließenden Klasse, um selbst instanziiert zu werden.
Diese [statisch verschachtelten] Klassen können nur auf die statischen Mitglieder der umschließenden Klasse zugreifen, [da sie keinen Verweis auf Instanzen der umschließenden Klasse haben...].
Code-Beispiel:
public class Test {
class A { }
static class B { }
public static void main(String[] args) {
/*will fail - compilation error, you need an instance of Test to instantiate A*/
A a = new A();
/*will compile successfully, not instance of Test is needed to instantiate B */
B b = new B();
}
}