Trong một ngôn ngữ purefunctional, nơi mà giá trị là không thay đổi, mỗi biến phải được khởi tạo một giá trị có thể được kiểm tra để đảm bảo rằng nó là hợp lệ. Điều này cho thấy rằng chúng tôikhông bao giờ nên cho phép một biến để tham khảo của chúng tôi người bạn cũ, null. Các giá trị null là một phổ biếnnguồn gốc của lỗi. Tony Hoare, người phát minh ra khái niệm về trống, mới gọi là nóSai lầm tỷ đô la [Hoare2009].Mô hình của Java là để "giả vờ" đó là một Nulltype đó là phiên bản của tất cả các loại khác trongHệ thống. Giả sử bạn có một biến loại chuỗi. Nếu giá trị có thể được null, bạncó thể cũng nghĩ rằng loại như thực sự StringOrNull. Tuy nhiên, chúng tôi không bao giờ nghĩ rằng ở một trong haiđiều khoản và rằng có lý do tại sao chúng ta thường quên để kiểm tra null. Những gì đang thực sự xảy ra làchúng tôi có một biến thể "tùy chọn" chứa một giá trị. Vì vậy, tại sao không rõ ràng đại diện choý tưởng này trong hệ thống loại? Hãy xem xét các lớp trừu tượng sau đây:tùy chọn gói;
đang được dịch, vui lòng đợi..