Tôi có một lớp Java có dạng sau:Java Iterator với nhiều loại nguyên thủy
class Example {
private byte[][] data;
public Example(int s) { data = new byte[s][s]; }
public byte getter(int x, int y) { return byte[x][y]; }
public void setter(int x, int y, byte z) { byte[x][y] = z; }
}
Tôi muốn để có thể bên ngoài lặp qua các dữ liệu cá nhân sử dụng một iterator như vậy:
for(byte b : Example) { ;/* do stuff */ }
tôi cố gắng thực hiện một lớp Iterator tin nhưng tôi chạy vào vấn đề:
private class ExampleIterator implements Iterator {
private int curr_x;
private int curr_y;
public ExampleIterator() { curr_x=0; curr_y=-1; }
public boolean hasNext() {
return curr_x != field.length-1
&& curr_y != field.length-1; //is not the last cell?
}
public byte next() { // <-- Error is here:
// Wants to change return type to Object
// Won't compile!
if(curr_y=field.length) { ++curr_x; curr_y=0; }
return field[curr_x][curr_y];
}
public void remove() { ; } //does nothing
}
Làm cách nào để triển khai một trình biến đổi bên ngoài cho các loại nguyên thủy (không phải là generics)? Điều này có thể thực hiện được trong Java không?
Có tương tự 'Iterable' cho các kiểu nguyên thủy, vì vậy tôi có thể thực hiện' for (double d: myContainerWithDoubles) {} '? –
Không có trình lặp vòng lặp nguyên gốc. Phù hợp nhất là triển khai 'PrimitiveIterator.OfDouble' và sử dụng nó theo kiểu chức năng. – Oroboros102