10
อินเทอร์เฟซ Marker ใน Java?
ฉันได้รับการสอนว่าอินเทอร์เฟซ Marker ใน Java เป็นอินเทอร์เฟซที่ว่างเปล่าและใช้เพื่อส่งสัญญาณไปยังคอมไพเลอร์หรือ JVM ว่าอ็อบเจ็กต์ของคลาสที่ใช้อินเทอร์เฟซนี้ต้องได้รับการปฏิบัติด้วยวิธีพิเศษเช่นการทำให้เป็นอนุกรมการโคลนเป็นต้น แต่เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ว่าจริงๆแล้วมันไม่มีส่วนเกี่ยวข้องกับคอมไพเลอร์หรือ JVM ยกตัวอย่างเช่นในกรณีของSerializableอินเตอร์เฟซที่วิธีการwriteObject(Object)ของObjectOutputStreamไม่บางอย่างเช่นinstanceOf Serializableการตรวจสอบว่าระดับการดำเนินการSerializableและพ่นNotSerializableExceptionตาม ทุกอย่างได้รับการจัดการในโค้ดและดูเหมือนว่าจะเป็นรูปแบบการออกแบบดังนั้นฉันคิดว่าเราสามารถกำหนดอินเทอร์เฟซเครื่องหมายของเราเองได้ ตอนนี้ข้อสงสัยของฉัน: คำจำกัดความของอินเทอร์เฟซเครื่องหมายที่กล่าวถึงข้างต้นในจุดที่ 1 ผิดหรือไม่? เราจะกำหนดอินเทอร์เฟซ Marker ได้อย่างไร? และแทนที่จะใช้ตัวinstanceOfดำเนินการทำไมเมธอดถึงไม่เป็นแบบwriteObject(Serializable)นั้นเพื่อให้มีการตรวจสอบประเภทเวลาคอมไพล์แทนรันไทม์? คำอธิบายประกอบดีกว่าอินเทอร์เฟซมาร์กเกอร์อย่างไร