Từ quan điểm lập trình thực tế ngày này sang quan điểm khác, lớp trống không có ý nghĩa gì nhiều. Tuy nhiên, có những trường hợp mà hành vi này là mong muốn. Có những tình huống mà chúng tôi muốn đảm bảo rằng chúng tôi muốn xác định một lớp và cùng một lúc, chúng tôi muốn đảm bảo rằng trường hợp của lớp này sẽ không bao giờ được tạo (kiểu được tạo từ lớp đó được gọi là empty type
hoặc uninhabited type
).
Perfect ví dụ của việc này là Kotlin Nothing
lớp với không có tiêu đề khai báo lớp và cơ thể (chú ý rằng nó cũng có xây dựng tư nhân) https://github.com/JetBrains/kotlin/blob/master/core/builtins/native/kotlin/Nothing.kt
Có vài tập quán cho Nothing
trong ngôn ngữ Kotlin. Một trong số đó sẽ là một hàm không trả về một giá trị (không nhầm lẫn điều này với Unit
trong đó hàm trả về thực sự trả về một giá trị kiểu Unit
). Một ví dụ điển hình là phương pháp assertFail
được sử dụng để thử nghiệm hoặc phương pháp thoát khỏi quá trình hiện tại. Cả hai phương thức này sẽ không bao giờ thực sự trả về bất kỳ giá trị nào mà chúng ta cần nói rõ ràng với trình biên dịch bằng cách sử dụng kiểu đặc biệt (Nothing
).
fun assertFail():Nothing {
throw Exception()
}
Không có gì có thể cũng được sử dụng với các dự báo bắt đầu nơi loại Function<*, String>
có thể trong dự Function<in Nothing, String>
Một cách sử dụng cho lớp rỗng là gõ dấu hiệu hoặc giữ chỗ:
class DatabaseColumnName
class DatabaseTableName
addItem(DatabaseColumnName.javaClass, "Age")
addItem(DatabaseTableName.javaClass, "Person")
...
getItemsByType(DatabaseTableName.javaClass)
Một số ngôn ngữ là sử dụng các lớp trống cho lập trình meta mặc dù tôi chưa tự khám phá phần này: Advantages of an empty class in C++
Nguồn
2017-12-01 14:09:03
Kotlin Reddit AMA [ans] (https://www.reddit.com/r/Kotlin/comments/7hoytl/kotlin_team_ama_ask_us_anything/dqt0en5/) – imGs