Mã của tôi không thể chuyển đổi từ E sang E. Tôi có thể tạo một kiểu để nhập E nhưng có vẻ như không cần thiết ở giai đoạn này. Mảng của tôi đã được khai báo là kiểu E. Java Generics, Không thể chuyển đổi từ E sang E
import java.util.Iterator;
public class DataTypeDemo<E>
{
private E[] data = (E[]) new Object [10];
public MyIterator newIterator()
{
return new MyIterator();
}
private class MyIterator<E> implements Iterator<E>
{
private int location;
public boolean hasNext()
{
return location < data.length;
}
public E next()
{
return (data[location++]); // error here
}
public void remove()
{
throw new UnsupportedOperationException();
}
}
}
Compiler, ném lỗi này:
DataTypeDemo.java:23: loại không tương thích tìm thấy: E yêu cầu: E
Vui lòng đăng một ví dụ hoàn chỉnh cho phép người khác tạo lại lỗi của bạn. Nếu không, bạn sẽ không nhận được sự giúp đỡ. BTW, bạn có kiểm tra xem bạn không có hai lớp được gọi là "E" (trong các gói khác nhau) không? – sleske
Bất kỳ lý do nào bạn không sử dụng 'Danh sách'? Mảng và generics thực sự không chơi rất độc đáo với nhau. –
@sleske: 'E' là tham số kiểu trên lớp. Không có lớp thực tế nào được gọi là 'E' trong trường hợp này. –