2011-08-21 67 views
13

Bản sao có thể xảy ra:
marker interface
What is the purpose of a marker interface?Mục đích của giao diện điểm đánh dấu là gì?

Tôi biết giao diện đánh dấu là gì - Một giao diện không có phương pháp. Ví dụ: Serializable, Remote, Cloneable.

Tôi tự hỏi mục đích của dấu vị trí là gì. Đây là sự hiểu biết của tôi: -

Về cơ bản nó chỉ là để xác định các đối tượng đặc biệt từ các đối tượng bình thường. Giống như trong trường hợp serialization, các đối tượng cần phải được serialized phải thực hiện serializable interface và xuống dòng writeObject() phương pháp phải được kiểm tra một nơi nào đó nếu nó là một thể hiện của serializable hay không. Theo tôi nghĩ, đó là mục đích duy nhất mà writeObject sử dụng giao diện serializable (giao diện đánh dấu). Đúng? hoặc jvm cung cấp một số chức năng bổ sung quá trên cơ sở giao diện serializable?

Loại logic tương tự là đúng đối với giao diện cloneable.

Bây giờ, hãy xem nó hữu ích như thế nào.

Cho phép nói trong một ứng dụng, chúng tôi có 1000 đối tượng giá trị.Chúng tôi muốn tuần tự hóa chỉ 100 đối tượng cụ thể. Bây giờ JDK đã nói rằng vai trò lập trình chỉ là để đánh dấu đối tượng là đặc biệt với giao diện điểm đánh dấu trong trường hợp này giao diện serializable.Now JDK của nó sẽ chăm sóc mà đối tượng để serialize hay không?

Có, chúng tôi có thể đạt được loại hành vi này với một số loại cờ bollean. nhưng rằng sẽ là một phương pháp xấu. Tương tự như chúng ta có thể nói trong trường hợp giao diện đánh dấu do người dùng xác định, chúng ta có thể phân biệt các đối tượng đặc biệt với sự trợ giúp của giao diện điểm đánh dấu. Như chúng ta có thể sử dụng thể hiện toán tử để xác định xem nó có phải là một thể hiện của giao diện cụ thể đó hay không. Nếu có tiến hành trong trường hợp Không ném một số ngoại lệ.

Vui lòng cho nếu sự hiểu biết trên là đúng?

+0

có các từ khóa trùng lặp. hãy để tôi tìm thấy chúng – Bozho

Trả lời

14

Hiểu biết của bạn là chính xác. Giao diện điểm đánh dấu cũng xác định một loại. Do đó, nó có thể được sử dụng trong các chữ ký phương thức. Ví dụ, Hibernate's Session.get() method nhận một đối số Serializable as. Nó tránh đi qua một khóa chính mà sẽ không được serializable như đối số.

Lưu ý rằng Cloneable là, nhìn lại, được xem là lựa chọn thiết kế kém.

Có thể quét tuần tự có thể được triển khai bằng chú thích nếu những chú thích đó đã tồn tại khi quá trình tuần tự được triển khai.

Giao diện điểm đánh dấu, hầu hết thời gian, chống mẫu. Một giao diện nên xác định một hành vi đa hình. Có thể thay thế giao diện điểm đánh dấu bằng chú thích.

+0

liên kết này cũng đã chứng minh điều tương tự http://javarevisited.blogspot.in/2012/01/what-is-marker-interfaces-in-java-and.html –

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