Khi nào chúng ta nên sử dụng biến cuối cùng tĩnh chưa được khởi tạo? Tôi biết rằng một biến cuối cùng tĩnh chưa được khởi tạo chỉ có thể được gán các giá trị trong khối khởi tạo tĩnh, nhưng tôi không thể nghĩ ra bất kỳ việc sử dụng thực sự nào cho điều này.Khi nào chúng ta nên sử dụng biến cuối cùng tĩnh chưa được khởi tạo?
Trả lời
tôi giả sử bạn có nghĩa là:
public static final Object obj;
với không có giá trị ban đầu được chỉ định rõ ràng?
Bạn có thể gán nó trong khối static
dựa trên một số tính toán chỉ có thể xảy ra trong thời gian chạy, như đọc một số tệp thuộc tính để tạo một hằng số Ứng dụng không được biết tại thời gian biên dịch.
thankyou rất nhiều! –
@Tudor, Tại sao nó mặc định là 'null'? Hành vi này có được đảm bảo trong thông số kỹ thuật không? Dường như với tôi rằng giá trị mặc định là không xác định bởi vì chúng tôi sẽ không thể đọc nó trước khi chuyển nhượng ở nơi đầu tiên (lỗi trình biên dịch). – Pacerier
@Pacerier: Được phát hiện tốt. Nó thực sự sẽ là một lỗi biên dịch thời gian để không gán một giá trị cho một trường 'final' và spec cho biết mặc định sẽ không bao giờ được quan sát cho các trường như vậy. Tôi đã sửa chữa câu trả lời của mình. – Tudor
Được sử dụng khi khởi tạo biến không thể thực hiện trong một dòng. Ví dụ:
private static final Map<String, String> CACHE;
static {
Map<String, String> cache = new HashMap<String, String>();
cache.put("foo", "bar");
cache.put("zim", "bam");
// lots of other entries
CACHE = Collections.unmodifiableMap(cache);
}
Về cơ bản, nếu bạn cần chỉ định giá trị không thể biểu diễn dễ dàng trong một biểu thức. Ví dụ, bạn có thể muốn thực hiện một số logic để xây dựng một bản đồ bất biến, và sau đó gán nó.
Nói chung nó dễ đọc hơn để đưa "xây dựng" logic vào một phương pháp tĩnh riêng biệt, và sử dụng trong các nhiệm vụ bình thường mặc dù:
private static final Map<String, String> FOO_MAP = buildFooMap();
cảm ơn! Nó cho tôi lời giải thích tốt hơn. –
tĩnh + cuối cùng
Nói tóm lại,
tĩnh - để làm cho nó như là một biến lớp - Không phụ thuộc vào các đối tượng (sử dụng đối với mọi đối tượng cùng một vị trí luôn)
Cuối cùng - để biến nó thành hằng số. (Nếu cuối cùng là trước một Biến thể!)
Chúng ta chỉ cần tĩnh ở đâu?
=> Có thể đếm số lượng đối tượng một đối tượng.
Chúng ta chỉ cần cuối cùng ở đâu?
=> Thực hiện điều gì đó liên tục!
Chúng tôi cần tĩnh + cuối cùng ở đâu?
=> Biến biến có thể truy cập được đối với mọi đối tượng và tạo một hằng số. Việc tạo lớp cho COLOR có thể là.
Đối với các biến tĩnh trống, quá trình khởi tạo đã được thực hiện bằng khối tĩnh.
public class StaticDemo
{
private static final String name;
static
{
name = "yash";
}
}
và tại sao sử dụng sản phẩm nào? vì có thể bạn không thể khởi tạo ngay từ đầu. Tôi chấp nhận cái trước đó.
Nếu trình khởi tạo cho trường tĩnh có thể ném một ngoại lệ, bạn không thể khởi tạo nó trong một dòng, bạn phải có một khối tĩnh hoặc một phương thức tĩnh.
cảm ơn! Nó có thể là một sử dụng của biến cuối cùng tĩnh chưa được khởi tạo. –
Biến cuối cùng tĩnh phải được khởi tạo tại thời điểm tạo, không giống như biến cuối cùng trống, bạn không thể trì hoãn khởi tạo cho hàm tạo vì chúng là tĩnh.
- 1. Khi nào chúng ta nên sử dụng lớp học và khi chúng ta không nên
- 2. theo dõi các biến tĩnh chưa được khởi tạo
- 3. Khi nào chúng ta nên sử dụng mutex và khi nào chúng ta nên sử dụng semaphore
- 4. Java - Các biến cuối cùng có thể được khởi tạo trong khối khởi tạo tĩnh không?
- 5. Tại sao chúng ta nên sử dụng mã hóa ui khi chúng ta có Specflow?
- 6. Biến cuối cùng có thể được khởi tạo khi một đối tượng được tạo không?
- 7. Khi nào chúng ta nên đóng EntityManagerFactory?
- 8. Chúng ta có nên đóng HttpPostedFile.Inputstream, khi chúng ta đã hoàn thành việc sử dụng nó?
- 9. Ext.namespace là gì, chúng ta nên sử dụng chúng như thế nào?
- 10. Khi nào chúng ta sử dụng ANTLR
- 11. Khi nào chúng ta nên xem xét sử dụng riêng tư hoặc được bảo vệ?
- 12. MVC: tại sao chúng ta cần "điều khiển", hoặc khi nào chúng ta nên sử dụng mẫu này?
- 13. Khi nào nên sử dụng và khi nào không sử dụng Try Catch Cuối cùng
- 14. Tại sao biến cuối cùng phải được khởi tạo trước khi hàm tạo hoàn thành?
- 15. Biến toàn cục chưa được khởi tạo ở đâu sau khi khởi tạo?
- 16. Biến Delphi có thể chưa được khởi tạo cảnh báo
- 17. Khi nào tôi nên sử dụng cuối cùng-block trong Java try-catch-cuối cùng
- 18. Chữ viết tắt nào chúng ta nên sử dụng cho tên biến python?
- 19. Tại sao chúng ta không sử dụng toán tử mới khi khởi tạo một chuỗi?
- 20. khi nào chúng ta nên sử dụng instanceof và khi không phải
- 21. Tại sao nên sử dụng id khi chúng ta có thể sử dụng NSObject?
- 22. Khi nào các biến tĩnh và toàn cầu được khởi tạo?
- 23. Khởi tạo biến cuối cùng trước khi hàm tạo trong Java
- 24. Tại sao nên sử dụng các khối tĩnh để khởi tạo trực tiếp các biến mẫu?
- 25. Sử dụng Phản chiếu để đặt giá trị biến tĩnh trước khi khởi tạo đối tượng?
- 26. Chúng ta có nên sử dụng ScalaSignature trực tiếp không?
- 27. Tại sao chúng ta cần các nhà thầu tĩnh?
- 28. tại sao chúng ta không nên sử dụng ++ trong javascript?
- 29. Khi nào và tại sao chúng ta nên sử dụng lớp System.ComponentModel.Container?
- 30. Khi nào, nếu bao giờ, chúng ta nên sử dụng const?
có lẽ _never_? –
Bạn có ý nghĩa gì với "trống"? Bạn có nghĩa là biến 'static final' được khởi tạo thành' null' không? Hay bạn chỉ có nghĩa là bất kỳ loại 'static final' variable (' private static final', 'public static final', v.v.)? –
Ông có nghĩa là trống như chưa được khởi tạo. – fivedigit