Trong Java 5 trước, không có chú thích. Kết quả là bạn không thể thêm siêu dữ liệu vào một lớp học.Tại sao java.io.Serializable không được chấp nhận trong Java 5?
Để đánh dấu một lớp như serializable, bạn phải thực hiện các giao diện Serializable (mà chỉ vậy, một dấu hiệu là) và sử dụng thêm transient
từ khóa để đánh dấu một lĩnh vực là không serializable nếu cần thiết, một cái gì đó như:
public class MyClass implements Serializable {
...
private transient Bla field;
...
}
Bây giờ bạn về mặt lý thuyết có thể tận dụng các chú thích (đây là một sử dụng hoàn hảo cho họ) và có:
@Serializable
public class MyClass {
...
@Transient
private Bla field;
...
}
Nhưng giao diện và từ khóa không được tán thành và không có chú thích đã được bổ sung trong Java 5 để thay thế chúng .
Các cân nhắc cho quyết định này để giữ giao diện và từ khóa là gì?
Tất nhiên là có vấn đề về tính tương thích với mã Java 5 trước, nhưng tại một thời điểm nào đó sẽ kết thúc (ví dụ: liên quan đến các tính năng mới của generics, JLS chỉ định rằng It is possible that future versions of the Java programming language will disallow the use of raw types). Vậy tại sao không chuẩn bị cho các chú thích được sắp xếp theo thứ tự?
Mọi suy nghĩ? (Mặc dù tôi muốn tham khảo cụ thể: D mà tôi đã không thể tìm thấy)
Thông thường việc này đang được thực hiện để làm cho mã hiện có tương thích ngược. Vì vậy, bạn có thể dễ dàng nâng cấp nhưng di chuyển từng bước sang các chú thích mới. –
Bạn đang tham chiếu phần nào trong JLS? – Atreys
@Atreys: Cái có chứa * Có thể là các phiên bản tương lai của ngôn ngữ lập trình Java sẽ không cho phép sử dụng các kiểu thô * nhận xét – ElenaT