ich JLS 8 and in Chapter 6 gerade lese geschrieben:Einfach Name und qualifizierter Name
Ein qualifizierter Name Nx verwendet werden, um ein Mitglied eines Paket oder Referenztyp zu beziehen, wobei N ein einfacher oder qualifizierter Name ist und x ist eine Kennung. Wenn N ein Paket benennt, ist x ein Mitglied dieses Pakets, , das entweder ein Klassen- oder Schnittstellentyp oder ein Unterpaket ist. Wenn N-Namen ein Referenztyp oder eine Variable eines Referenztyps ist, dann benennt x einen Member dieses Typs, der entweder eine Klasse, eine Schnittstelle, ein Feld, oder eine Methode ist.
Ich konnte so vorstellen, dass dies mit:
class C
{
public int n;
}
int j;
C c = new C();
j = 11;
c.n = 11;
j
ein einfacher Name ist während c.n
ein qualifizierter Name ist.
Jedoch in 6.2 Dinge werden kompliziert. Gegeben diesen Code:
class Test {
public static void main(String[] args) {
Class c = System.out.getClass();
System.out.println(c.toString().length() +
args[0].length() + args.length);
}
}
und nach gesagt:
Das Auftreten von Länge in args.length ein Name ist, weil args.length ein qualifizierter Name ist (§6.5.6.2) und kein Feldzugangsausdruck (§15.11). Ein Feldzugriffsausdruck sowie ein Methodenaufruf Ausdruck, ein Methodenreferenzausdruck und eine qualifizierte Klasse Instanzerstellungsausdruck verwenden einen Bezeichner anstelle eines Namens bezeichnen das Mitglied von Interesse. Das Auftreten von length in args [0] .length() ist also kein Name, sondern ein Bezeichner, der in einen Methodenaufrufausdruck erscheint.
so denke ich, ich verstehe, dass nicht alles Ausdrücke qualifizierte Namen sind und sogar mein Ausdruck c.n
Ehrlich gesagt kann ich nicht die Unterscheidung jemand mir helfen, verstehen?
Es wäre einfacher, die Abschnitte der Spezifikation zu lesen, auf die Sie sich beziehen, wenn Sie einige Links hinzufügen würden. –
Was versuchen Sie hier zu verstehen? Versteht mich nicht falsch, ich werde die Frage nicht anklopfen, ich liebe es, JLS zu lesen, um solche Dinge zu finden, aber ich muss sagen, ich kämpfe auch mit der Unterscheidung - und ich denke, es könnte helfen, das zu verstehen spezifischer Kontext des vorliegenden Problems statt der Allgemeinheit der Spezifikation. –