In Java, è possibile accedere a un membro pubblico di una classe utilizzando .
come si può vedere nella seconda riga del metodo principale nell'esempio seguente (per l'esempio, ignorare il mio scarso utilizzo di incapsulamento).È il '.' per l'accesso dei membri considerato un operatore in Java?
public class Test {
public static void main(String[] args) {
Position p = new Position(0,0);
int a = p.x; // example of member access
}
}
class Position {
public int x;
public int y;
public Position(int x, int y) {
this.x = x;
this.y = y;
}
}
Is i .
considerati un operatore nel linguaggio di programmazione Java, proprio come *
, ~
, e !=
sono considerati operatori?
Modifica - Estendere l'esempio di cui sopra:
Come è stato fatto notare, sembra che la specifica del linguaggio Java considera .
di essere un separatore e non un operatore. Tuttavia, vorrei sottolineare che .
mostra un comportamento che sembra piuttosto operatore-ish. Si consideri l'esempio precedente estesa alla seguente:
public class Test {
public static void main(String[] args) {
Position p = new Position(0,0);
int a = p . x; // a -> 0
int x = 1;
int b = p . x + x; // b -> 1
}
}
class Position {
public int x;
public int y;
public Position(int x, int y) {
this.x = x;
this.y = y;
}
}
È chiaro che alcuni precedenza viene applicata in modo tale che l'accesso membro è valutata prima dell'aggiunta. Questo sembra intuitivo perché se l'aggiunta dovesse essere valutata prima, allora avremmo p.2
che è una sciocchezza. Tuttavia, è chiaro che .
mostra un comportamento che gli altri separatori non presentano.
Considera di ignorare la sintassi "this". È una cattiva pratica nel mondo java, super nell'altra parte va bene quando estendi le lezioni. – Tom
@Tom Se mi sono sbarazzato degli usi di 'this' nel mio esempio, allora i miei campi pubblici non sarebbero stati istanziati e avrei avuto un errore in fase di esecuzione. Inoltre, ciò non è particolarmente attento alla mia domanda. – jbranchaud
@ Tom La tua opinione forse, ma difficilmente una regola generale. Personalmente trovo l'uso di questo in setter e costruttori di gran lunga superiore a inventare nuovi nomi per i parametri, così posso distinguerli e i campi. – Voo