Считается ли '.' для доступа к члену класса оператором в Java?

В Java я могу получить доступ к открытому члену класса, используя . , как видно из второй строки метода main в следующем примере (ради этого примера не обращайте внимания на мое плохое использование инкапсуляции).

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;
    }
}

Является ли считается оператором в языке программирования Java, так же как *, ~ и != считаются операторами?


Edit - Расширение примера выше:

Как было отмечено, похоже, что спецификация языка Java считает . как разделитель, а не как оператор. Тем не менее, я хотел бы отметить, что . демонстрирует некоторое поведение, которое кажется скорее операторным. Рассмотрим приведенный выше пример, расширенный до следующего:

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;
    }
}

Очевидно, что соблюдается некоторый приоритет, так что доступ к члену оценивается перед сложением. Это кажется интуитивно понятным, потому что если бы дополнение оценивалось первым, то мы бы получили p.2, что является бессмыслицей. Тем не менее, очевидно, что . демонстрирует поведение, которого нет у других разделителей.

9
задан jbranchaud 31 January 2012 в 23:35
поделиться