- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi thường nghĩ rằng việc dọn dẹp tài nguyên được thực hiện trong finally
Hoàn thành trong khối,
Gần đây tôi tìm thấy đoạn mã cụ thể này trong một lớp ghi đè Object
loại'hoàn thiện()
方法。
được bảo vệ void hoàn thiện () {
thử {
Ghim theo();
Out.close();
socket.close();
}
bắt (Ngoại lệ e) {
// mã logger ở đây
}
}
Đây có phải là một ý tưởng tốt? hoàn thiện()
liên quan đến finally
Ưu điểm và nhược điểm của là gì?
câu trả lời hay nhất
finally
khối chỉ là một thử
Khối mã được thực thi sau khối, ngay cả khi xảy ra ngoại lệ. tức là nó có phạm vi cục bộ
hoàn thiện()
Phương thức là một cách để dọn sạch toàn bộ đối tượng trong quá trình thu gom rác.
finally
Đã giải quyết vấn đề dọn sạch tài nguyên trong một đoạn mã bất kể có xảy ra ngoại lệ hay không...hoàn thiện()
là một cách để dọn sạch tài nguyên khi đối tượng của bạn không còn được sử dụng nữa, một khi trình thu gom rác xác định rằng không còn tham chiếu nào đến đối tượng nữa.
Tóm lại, để trả lời câu hỏi của bạn, ví dụ: nếu ổ cắm bạn muốn đóng là thành viên của một đối tượng, bạn nên thực hiện điều đó trong hoàn thiện()
phương thức, (mặc dù điều này là chưa tối ưu, chẳng hạn, vì không có gì đảm bảo khi nào GC sẽ thực sự thực hiện thao tác này)
Tuy nhiên, nếu bạn mở socket trong một phương thức và khi phương thức đó kết thúc thì bạn đã hoàn tất nó, bạn nên thả ra finally
tài nguyên trong khối.
Giới thiệu về java - Làm sạch mã trong phần cuối cùng() hoặc cuối cùng()? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1843905/
关闭。这个问题需要更多 focused .它目前不接受答案。 想要改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this q
1.final cuối cùng sửa đổi lớp, chỉ ra rằng lớp này không thể được kế thừa và là lớp cấp cao nhất. cuối cùng sửa đổi một biến để chỉ ra rằng biến đó là một hằng số. Phương thức được sửa đổi cuối cùng có nghĩa là phương thức này không thể bị ghi đè nhưng có thể được ghi đè trong phương thức cuối cùng. Ví dụ, có
Tôi muốn biên dịch mã của mình bằng cách sử dụng các phương thức -Wsuggest-final-types và -Wsuggest-final- để được cảnh báo khi có cơ hội sử dụng từ khóa cuối cùng để cho phép trình biên dịch tối ưu hóa mạnh mẽ hơn. Nhưng
Tôi có một hoạt động không đồng bộ trong Java 8, trả về lệnh gọi lại onError hoặc lệnh gọi lại onSuccess. Tôi cần quay lại bên trong phương thức của mình nếu thao tác thành công hay không. Vì vậy tôi trả về một giá trị boolean để chỉ ra thông tin này. TÔI
Tôi đang đọc nội dung nào đó và cần giải thích rõ ràng về lớp và phương pháp cuối cùng. Sự hiểu biết của tôi là việc khai báo lớp cuối cùng sẽ ngăn lớp học được mở rộng. Vậy có cần thiết phải khai báo phương thức ở lớp cuối cùng là cuối cùng không? Theo mình nếu class không mở rộng được thì không cần khai báo phương thức
Sự khác biệt là gì try { // hành động A } Catch(Exception e) { // hành động B } cuối cùng { // hành động C }
Chương trình này là bài tập cuối cùng cho lớp của tôi và tôi không hiểu tại sao mình lại gặp lỗi "Biến cục bộ được tham chiếu từ lớp bên trong phải là cuối cùng hoặc cuối cùng một cách hiệu quả". Chương trình đang chạy các luồng đồng thời để sắp xếp một mảng # rồi tìm giá trị cao và thấp của mảng. Khi tôi không ở đây
Cuối cùng, tôi hiểu rằng cuối cùng có hai điều: Làm cho một lớp không thể kế thừa. Tạo các hàm (ảo) trong một lớp không thể ghi đè (trong các lớp dẫn xuất). Hai người dường như độc lập với nhau. Nhưng hãy lấy ví dụ sau: class Foo
Tôi muốn tạo biểu mẫu bằng cách sử dụng biểu mẫu phản ứng cuối cùng với nhiều nút gửi, trong đó mỗi nút gửi đặt một giá trị khác nhau trong biểu mẫu. Về cơ bản, tôi muốn tạo một biểu mẫu trông như thế này trong HTML được hiển thị: Bạn có trên 1 tuổi không?
Tôi muốn biết khi nào tôi nên sử dụng các tham số tĩnh, cuối cùng, tĩnh cuối cùng cho các biến và/hoặc phương thức. Theo như tôi hiểu: cuối cùng: tương tự như tham số const trong c++. Về cơ bản nó có nghĩa là giá trị (hoặc trong một phương thức - giá trị trả về) không thay đổi. Tĩnh: Điều này có nghĩa là giá trị (hoặc phương thức
Tôi đang làm việc trong một dự án lớp lập trình để nhân ma trận của chính ma trận 400 hàng. Tôi cho nó hoạt động ở chế độ tuần tự, mục tiêu của dự án là viết một bản triển khai song song. Tôi có đoạn mã sau và tất nhiên khi tôi cố gắng tham chiếu bộ đếm j trong lớp bên trong, tôi nhận được thông báo về
Có lẽ đây là câu hỏi đơn giản nhưng tôi không thể tìm thấy câu trả lời. Các biến cổ điển được khai báo cuối cùng có chứa phân đoạn bộ nhớ khác với các biến không phải là biến cuối cùng không? Câu trả lời hay nhất tôi muốn nói, khi nói đến các biến cục bộ, dựa trên câu trả lời này là không thể. : Sự thật
Hãy xem xét đoạn mã sau: #include class B { virtual void f() { std::cout << "Base" << '\n' };
Câu hỏi này đã có câu trả lời: java: Có thể đặt biểu thức lambda cho một mảng Nút là vòng lặp for không?
Hãy xem đoạn mã này public class ConstantFolding { static Final int number1 = 5;
Tôi chắc chắn rằng các biến được truy cập trong các lớp bên trong phải được khai báo cuối cùng hoặc cuối cùng một cách hiệu quả. Nhưng trong trường hợp sau tôi bối rối. Không biết mình có hiểu sai không. lớp công khai MyClass { boolean riêng tư
Tôi phải chuyển một đối tượng java.sql.Connection tới một lớp bên trong ẩn danh, có nghĩa là tôi phải tạo một tham chiếu cuối cùng đến nó. Tuy nhiên, tôi lo lắng về bất kỳ rò rỉ tài nguyên nào. Chuỗi tĩnh công khai foo(
Tôi gặp lỗi SonarQube: "Chúng tôi khuyên bạn nên gọi super.finalize() khi kết thúc quá trình triển khai phương thức này, trong trường hợp quá trình triển khai gốc cũng phải giải phóng một số tài nguyên hệ thống." phương pháp hoàn thiện.
Tôi thường nghĩ rằng việc dọn dẹp tài nguyên được thực hiện trong khối cuối cùng. Gần đây tôi đã tìm thấy đoạn mã cụ thể này trong một lớp ghi đè phương thức Finalize() của lớp Đối tượng. cuối cùng được bảo vệ
Chúng ta hãy sử dụng phương thức này trong lớp cha: public void CalculateSum(int a, Final int b) { } Các lớp con có: public void CalculateSum(int a,
Tôi là một lập trình viên xuất sắc, rất giỏi!