Trong java một lớp có thể thực hiện Iterable cho phép bạn sử dụng câu lệnh foreach() và lặp đường syntatic:Trong Java, làm thế nào bạn sẽ viết tương đương với Iterable mà có thể ném ngoại lệ?
for(T t:ts) ...
Tuy nhiên, điều này không cho phép bạn ném ngoại lệ về việc xây dựng cho một Iterator. Nếu bạn đang lặp lại một mạng, tập tin, cơ sở dữ liệu, vv nó sẽ được tốt đẹp để có thể ném ngoại lệ. Các ứng cử viên rõ ràng là java.io.InputStream, Reader và mã java.nio.Channel, nhưng không ai trong số này có thể sử dụng Generics như giao diện Iterable có thể.
Có một thành ngữ chung hoặc API Java cho tình huống này không?
Làm rõ: Điều này hỏi xem có giao diện mẫu hay giao diện thay thế để lặp cho các đối tượng ngoài nguồn không nhớ. Theo phản ứng đã nói, chỉ cần ném RuntimeExceptions để có được xung quanh vấn đề không được đề nghị hoặc những gì tôi đang tìm kiếm.
Chỉnh sửa 2: Cảm ơn câu trả lời cho đến nay. Sự đồng thuận dường như là "bạn không thể". Vì vậy, tôi có thể mở rộng câu hỏi cho "Bạn làm gì trong tình huống này, khi tình huống này hữu ích?" Chỉ cần viết giao diện của riêng bạn?
Cảm ơn câu trả lời. Nhưng nếu bạn gọi ban đầu trước tiên bạn phải đọc tất cả mọi thứ vào bộ nhớ trước, và mất lợi ích của streaming, hoặc bạn phải đối phó với ngoại lệ –
Yup. Bạn khá nhiều phải chọn một ẩn dụ hoặc khác. Nếu bạn đang đối phó với một luồng thật, thì bạn nên gắn bó với phép ẩn dụ của luồng. – patros