2010-07-21 7 views
15

thể trùng lặp:
“using” keyword in javaJava tương đương với C# 'sử dụng' tuyên bố

Tôi đang chuyển từ C# để java, vì vậy hãy chịu với tôi ...

Khi đọc một tệp trong C#, bạn chỉ cần bọc tất cả trong một khối 'sử dụng' lớn, để nếu bạn có ngoại lệ, tệp sẽ vẫn bị đóng. Giống như vậy (có thể không chính xác nhưng bạn có ý tưởng):

using(FileStream fs = new FileStream("c:\\myfile.txt")) { 
    // Any exceptions while reading the file here won't leave the file open 
} 

Có tương đương thuận tiện trong java 5 hoặc 6 không? Tôi nhận được ấn tượng rằng gần đây java đã được 'mượn' một số đường cú pháp từ C# (như foreach) và vì vậy tôi sẽ không ngạc nhiên nếu có một java tương đương với việc sử dụng những ngày này.

Hoặc tôi có phải sử dụng try..finally block không? 'Sử dụng' chỉ là đẹp hơn rất nhiều tôi nghĩ rằng ...

+5

Nếu bạn cho rằng một câu hỏi là trùng lặp, sẽ rất hữu ích nếu bạn cung cấp liên kết đến câu hỏi được cho là trùng lặp. Chỉ cần đánh dấu những thứ như bản sao không hữu ích chút nào và làm cho trang web này ít hữu ích hơn. Câu hỏi này là một ví dụ tốt về lý do tại sao bạn phải cung cấp liên kết: khi tôi nhấp vào thẻ "đang sử dụng", tôi nhận được 568 lần truy cập - không thể tìm thấy câu trả lời gốc trong danh sách dài như vậy. Nếu tôi tìm kiếm [using] [java] tôi vẫn nhận được 24 lượt truy cập và câu trả lời tôi đang tìm kiếm nằm trên trang * giây * của danh sách kết quả: http://stackoverflow.com/questions/2943542/using- keyword-in-java –

Trả lời

22

Không có đường cú pháp tương đương bằng cách sử dụng câu lệnh trong Java 5 hoặc 6. Tuy nhiên, proposal để quản lý tài nguyên tự động bổ sung giao diện dùng một lần quen thuộc seems to have been accepted cho Java 7. Cho đến lúc đó, bạn phải tự thử mã ... cuối cùng.

2

Phải sử dụng thử .. cuối cùng

T.B. foreach (lặp qua bộ sưu tập) không phải là sáng chế của C#

+11

Nhưng 'foreach' chỉ là cú pháp, giống như' using', là điểm của OP. –