Tôi không chắc mình hiểu câu hỏi của bạn.
"Loại mạnh/yếu" là chất lượng của ngôn ngữ lập trình. Java được gõ mạnh mẽ, có nghĩa là nó có một cú pháp nghiêm ngặt, và nó có thể tìm thấy các vấn đề trong mã của bạn tại thời gian biên dịch, trước khi các lỗi làm cho nó chạy thời gian.
Java có thể không chính xác là loại an toàn, mặc dù (tôi không chắc chắn về câu trả lời chính xác). Nó cho phép Generics, có nghĩa là bạn có thể tạo một ArrayList của Strings (ArrayList<String>
), ArrayList của số nguyên (ArrayList<Integer>
), ArrayList của Booleans (ArrayList<Boolean>
). ArrayList<T>
có nghĩa là bạn có thể thay thế <T>
bằng bất kỳ đối tượng nào. ArrayList<? extends T>
có nghĩa là bạn có thể thay thế với bất kỳ A, B, C, khoai tây, vv mà kéo dài T.
Giả sử bạn có các lớp sau:
class Admin extends User {
//Stuff
}
class Student extends User {
//Stuff
}
class Teacher extends User {
//Stuff
}
Bạn thậm chí có thể có một ArrayList của bất kỳ đứa trẻ của một Đối tượng người dùng, ví dụ: ArrayList<User>
. Danh sách này, bạn có thể thêm Học sinh, Quản trị và Giáo viên đối tượng. Tuy nhiên, nếu bạn không chỉ định loại dữ liệu mà ArrayList này nắm giữ (ví dụ: List l = new ArrayList();
), bạn có thể đặt bất kỳ Object nào vào trong đó, khiến nó không được gõ an toàn.
Ví dụ về lạm dụng Generics can be seen on Wikipedia.
Lưu ý rằng "gõ mạnh" thường áp dụng cho ngôn ngữ lập trình, trong khi "nhập an toàn" có khả năng đến từ cụm từ "thu thập an toàn" ... –