Những gì tôi đang tìm kiếm:Java Generics thực thi cùng loại cho các phím và các giá trị của bản đồ
Tôi đang tìm để xây dựng một cái gì đó mà thi hành gõ trên cả khóa và giá trị của bản đồ: loại giống như Map<Key<X>, Value<X>>
. Tuy nhiên, tôi cũng muốn thực thi các loại đó khớp với trong mỗi mỗi mục nhập khóa/giá trị, nhưng giữa các mục nhập, không loại nào phải được thực thi.
Ví dụ, trong cùng một bản đồ, những cặp khóa/giá trị nên được coi là hợp lệ:
Key<Integer>
bản đồ đểValue<Integer>
Key<String>
bản đồ đểValue<String>
Key<Double>
bản đồ đểValue<Double>
Tuy nhiên, một cái gì đó như thế này sẽ không hợp lệ:
Key<Integer>
bản đồ đểValue<String>
Key<Double>
bản đồ đểValue<Boolean>
Làm thế nào tôi có thể thực hiện điều này bằng Java Generics?
Những gì tôi đang không tìm kiếm:
Tôi hiểu rằng tôi có thể thực hiện một cái gì đó giống như
Set<Pair>
, nơi cặp chấp nhận Key/Value cùng loại. Tuy nhiên, tìm kiếm điều này bằng cách phím sẽ không còn là một hoạt động liên tục thời gian.Tôi hiểu rằng tôi có thể làm điều gì đó như
Map<Key<?>, Value<?>>
và chỉ khẳng định rằng Khóa và giá trị là cùng một loại khi chạy. Tuy nhiên, tôi đã tự hỏi nếu điều này là có thể sử dụng đúng cách generics.
Bạn không có Bản đồ đó trong một lớp học chung? –
Không nhất thiết. Chỉ cần tìm cách tạo một 'Bản đồ' ở bất cứ nơi nào chỉ thực thi" Các khóa phải cùng loại với các giá trị (hoặc có cùng kiểu chung trong chúng, trong trường hợp của 'Key'/'Giá trị '), nhưng mỗi cặp khóa/giá trị có thể thuộc một loại khác. " –