với Java5 chúng ta có thể viết:
Foo[] foos = ...
for (Foo foo : foos)
hoặc chỉ sử dụng một Iterable trong vòng lặp for. Điều này rất tiện dụng.
Tuy nhiên, bạn không thể viết một phương thức chung cho iterable như thế này:
public void bar(Iterable<Foo> foos) { .. }
và gọi nó bằng một mảng vì nó không phải là Iterable:
Foo[] foos = { .. };
bar(foos); // compile time error
Tôi đang tự hỏi về những lý do đằng sau quyết định thiết kế này.
java.lang.reflect.Array
, nhưng hiệu suất của nó là yếu. Tuy nhiên, bạn có thể viết các trình lặp của riêng mình (hoặc liệt kê danh sách!) Để bọc các mảng kiểu nguyên thủy nếu bạn muốn.