Tôi đang cố triển khai lớp bên trong có kiểu tham số chung.Làm cách nào để sử dụng các loại generic được chứng thực trong một lớp bên trong?
Đây là một phiên bản ngắn của mã của tôi:
public class AVLTree<T extends Comparable<? super T>> implements Iterable<T> {
...
private class BinaryNode<T extends Comparable<? super T>> {
...
}
private class TreePreOrderIterator<E extends Comparable<? super E>> implements Iterator<E> {
...
}
}
Nó không làm việc. Eclipse/Java cho tôi một cảnh báo rằng tham số kiểu T
trên lớp bên trong là 'ẩn' tham số của lớp siêu. Bất kỳ suy nghĩ về cách tôi có thể sửa lỗi này?
EDIT: Tôi đã thêm lớp bên trong khác Tôi đang gặp sự cố với: TreePreOrderIterator
. Loại chung T
sẽ giống nhau cho AVLTree
, BinaryNode
và TreePreOrderIterator
. Các lớp bên trong cần truy cập các trường trong AVLTree.
EDIT2: Ngoài ra, Iterator
truy cập vào BinaryNode<T>
, đó là xung đột.
(Lưu ý:. Đây là một phần của dự án lớn hơn tôi đang làm cho một lớp Nếu bất kỳ thông tin nào khác là cần thiết, hãy hỏi.)
bạn có thể chỉnh sửa câu hỏi của mình để bao gồm cách loại BinaryNode chung được sử dụng không? ví dụ: BinaryNode có được tham số hóa cùng loại với AVLTree không? – Carl
Chỉ cần chỉnh sửa. Điều này có trả lời câu hỏi của bạn không? –