2016-06-24 36 views
6

Việc sử dụng hợp pháp đoạn mã sau là gì?Có sử dụng hợp pháp cho nhà xây dựng đối tượng không?

Object o =new Object(); 

Từ những gì tôi hiểu đối tượng này không có người sử dụng và không mang dữ liệu thực tế (trừ trường hợp có thể mã băm của nó). Tại sao điều này sẽ được sử dụng? Có thực hành chấp nhận được không. Nếu tôi có thể làm điều này, tôi có thể mở rộng lớp đối tượng một cách rõ ràng.

+7

Tôi đã thấy nó được sử dụng để tạo đối tượng khóa rõ ràng cho chủ đề, mặc dù có nhiều cách tốt hơn để thực hiện đồng thời. –

+0

Lý tưởng nhất là bạn không nên sử dụng AtomicReference foo; –

+1

Tại sao bạn không thể mở rộng 'Object' một cách rõ ràng? Đó là mặc định * ngầm định *. –

Trả lời

8

Từ những gì tôi hiểu đối tượng này không có người sử dụng và không mang dữ liệu thực tế (trừ trường hợp có thể mã băm của nó)

Đối tượng mang bản sắc của mình và monitor của nó. Đó là lý do tại sao phép gán này được sử dụng để tạo ra các trình giám sát đối tượng tách biệt với chính đối tượng đó.

Tại sao điều này sẽ được sử dụng? Có thực hành chấp nhận được không?

Cách sử dụng duy nhất mà tôi đã thấy để làm cho đối tượng này được sử dụng làm màn hình cho các đối tượng khác.

Nếu tôi có thể làm điều này, tôi có thể mở rộng lớp đối tượng một cách rõ ràng không?

Tuyệt đối. Bạn có thể mở rộng đối tượng trong một lớp ẩn danh như sau:

Object obj = new Object() { 
    @Override 
    public String toString() { 
     return "Hello, world!"; 
    } 
}; 
+3

Bạn cũng có thể mở rộng 'Object' trong một lớp được đặt tên (trên thực tế, tất cả các lớp ngầm đều làm). – Thilo

+1

Cảm ơn bạn đã trả lời chất lượng tốt –

Các vấn đề liên quan