আমাকে শেখানো হচ্ছিল যে জাভাতে মার্কার ইন্টারফেসটি একটি ফাঁকা ইন্টারফেস এবং সংকলক বা জেভিএমকে সংকেত দেওয়ার জন্য ব্যবহৃত হয় যে এই ইন্টারফেসটি প্রয়োগকারী শ্রেণীর অবজেক্টগুলিকে সিরিয়ালাইজিং, ক্লোনিং ইত্যাদির মতো একটি বিশেষ উপায়ে চিকিত্সা করা উচিত etc.
তবে ইদানীং আমি জেনেছি যে এটির সংকলক বা জেভিএমের সাথে আসলে কোনও সম্পর্ক নেই। উদাহরণস্বরূপ, ক্ষেত্রে Serializableইন্টারফেস পদ্ধতি writeObject(Object)এর ObjectOutputStreamভালো কিছু করে instanceOf Serializableকিনা তা সনাক্ত করতে বর্গ কার্যকরী Serializable& ছোঁড়ার NotSerializableExceptionনেই। কোডটিতে সমস্ত কিছু পরিচালনা করা হয় এবং এটি একটি নকশা-প্যাটার্ন বলে মনে হয় তাই আমি মনে করি আমরা আমাদের নিজস্ব চিহ্নিতকারী ইন্টারফেসগুলি সংজ্ঞায়িত করতে পারি।
এখন আমার সন্দেহ:
1 ম পয়েন্টে উপরে বর্ণিত মার্কার ইন্টারফেসের সংজ্ঞাটি কি ভুল? তখন আমরা কীভাবে একটি মার্কার ইন্টারফেসটি সংজ্ঞায়িত করতে পারি?
এবং
instanceOfঅপারেটরটি ব্যবহার না করে কেন পদ্ধতিটি এমন কিছু হতে পারে নাwriteObject(Serializable)যাতে রানটাইমের চেয়ে কমপাইল টাইম টাইপ চেকিং থাকে?মার্কার ইন্টারফেসের চেয়ে টিকা কীভাবে ভাল?
Serializableযেমন একটি টিকা হ'ল বাজে কথা এবং@NonNullইন্টারফেস হিসাবে আজেবাজে। আমি বলব: টীকাগুলি হ'ল চিহ্নিতকারী + মেটাডেটা। বিটিডাব্লু: টীকাগুলির ফোরফুনার ছিলেন এক্সডোকলেট, জাভাদোকে জন্মগ্রহণ করেছিলেন, এনটেশনগুলির দ্বারা নিহত হয়েছিল।