class Sub {
static int y;
public static void foo() {
this.y = 10;
}
}
Ich verstehe verwenden, dass this
das Objekt darstellt, sind das Verfahren und dass statische Methoden Aufruf nicht auf ein beliebiges Objekt gebunden. Aber im oben erwähnten Fall ist die Variable y auch statisch.Warum können wir nicht ‚this‘ Schlüsselwort in einer statischen Methode
Wenn wir statische Methode auf Klassenobjekt aufrufen können, warum können wir statischen Methoden nicht erlauben, die statischen Variablen der Klasse festzulegen.
Was ist der Zweck dieser zusätzlichen Einschränkung?
Ich weiß, das ist eine uralte Frage, aber ich möchte es als einen ziemlich gültigen Punkt +1 geben. Obwohl die Antwort für Felder einfach ist (lassen Sie das Qualifikationsmerkmal aus), wird sie für statische innere Klassen relevant und ist auch relevant, wenn Sie eine Referenz auf die Laufzeitinstanz der Klasse selbst haben möchten. Zum Beispiel kann ich "MyClass.class" eingeben, um die Singleton-Klasse zu erhalten, aber nur die Klasse selbst ist ungültig und es gibt keine ähnliche Problemumgehung. Dies führt dazu, dass der Klassenname möglicherweise durch die Einheit wiederholt wird, die nicht sehr DRY ist. –