Trong Java, tôi có thể truy cập một thành viên công khai của một lớp bằng cách sử dụng .
như có thể thấy trong dòng thứ hai của phương thức chính trong ví dụ sau (vì lợi ích của ví dụ này, bỏ qua việc sử dụng gói gọn của tôi).Là '.' để truy cập thành viên được coi là một toán tử trong 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;
}
}
Là .
coi là một nhà điều hành trong các ngôn ngữ lập trình Java, giống như *
, ~
, và !=
được coi là nhà khai thác?
Sửa - Mở rộng ví dụ trên:
Như đã chỉ ra, có vẻ như rằng đặc tả ngôn ngữ Java coi .
là một dấu phân cách và không phải là một nhà điều hành. Tuy nhiên, tôi muốn chỉ ra rằng .
trưng bày một số hành vi mà dường như là nhà điều hành-ish. Hãy xem xét ví dụ trên được mở rộng cho những điều sau:
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;
}
}
Rõ ràng là một số quyền ưu tiên đang được thực thi để quyền truy cập thành viên được đánh giá trước khi bổ sung. Điều này có vẻ trực quan bởi vì nếu phần bổ sung được đánh giá đầu tiên, thì chúng ta sẽ có p.2
là vô nghĩa. Tuy nhiên, rõ ràng là .
đang trưng bày hành vi mà các máy tách khác không làm.
Cân nhắc bỏ qua cú pháp "này". Đó là thực hành xấu trong thế giới java, siêu mặt khác là alright khi bạn mở rộng các lớp học. – Tom
@Tom Nếu tôi loại bỏ việc sử dụng 'this' trong ví dụ của tôi, thì các trường công khai của tôi sẽ không được khởi tạo và tôi sẽ gặp lỗi thời gian chạy. Ngoài ra, đó không phải là đặc biệt relavent cho câu hỏi của tôi. – jbranchaud
@Tom Ý kiến của bạn có thể, nhưng hầu như không phải là một quy tắc chung. Cá nhân tôi thấy việc sử dụng điều này ở những người định cư và xây dựng cao hơn nhiều so với việc phát minh ra một số tên mới cho các tham số để tôi có thể phân biệt chúng và các trường. – Voo