Tôi đang khám phá ngôn ngữ Scala. Một tuyên bố mà tôi thường nghe là Scala có hệ thống loại mạnh mẽ hơn so với Java. Bằng cách này, tôi nghĩ rằng những gì mọi người có nghĩa là:Ưu điểm của hệ thống kiểu Scala
scalac
bác bỏ các chương trình lỗi nào đó màjavac
sẽ biên dịch vui vẻ, chỉ để gây ra một lỗi thời gian chạy.- Một số bất biến có thể được mã hóa trong chương trình Scala sao cho trình biên dịch sẽ không cho phép lập trình viên viết mã vi phạm điều kiện.
Tôi có đang suy nghĩ như vậy không? Nếu có, vui lòng trỏ đến các bài viết/blog/giấy tờ minh họa các ví dụ như vậy.
Java sẽ không cho phép bạn biên dịch "các chương trình lỗi" hơn bất kỳ Scala nào; tuy nhiên, Scala * cho phép * nhiều cấu trúc hơn được [an toàn] thể hiện - và nói chung trong một phương thức dễ dàng hơn nhiều - hơn Java. Tuy nhiên, Scala vẫn "bị" từ loại tẩy xóa. –
@pst: Có, nó sẽ. Chuỗi 'String [] = {" foo "}; Đối tượng [] đối tượng = chuỗi; object [0] = new Object(); 'sẽ biên dịch tốt trong java và sau đó ném NPE vào thời gian chạy. Mã scala tương đương sẽ không biên dịch. – sepp2k
@ sepp2k Tôi nghĩ rằng đó là một 'ArrayStoreException' được ném ra, không phải là một NPE. –