জাভা উদাহরণস্বরূপ অপারেটর প্রতিফলন হিসাবে বিবেচিত হয় এবং প্রতিবিম্বকে কী ব্যাখ্যা করে?


24

জাভা অপারেটর ব্যবহারের ব্যবহারটি একধরণের instanceofপ্রতিবিম্ব কিনা তা নিয়ে আমার আজ সহকর্মীর সাথে আলোচনা হয়েছিল । এবং আলোচনাটি কীভাবে বাস্তবে প্রতিবিম্বকে সংজ্ঞায়িত করে তা দ্রুত বিকশিত হয়েছিল।

তো, প্রতিবিম্বের সংজ্ঞা কী?

এবং instanceof"প্রতিবিম্ব ব্যবহার করে" বিবেচনা করা কি ব্যবহার?

এবং তদ্ব্যতীত, যদি instanceofপ্রতিবিম্ব হিসাবে বিবেচনা করা হয়, তবে বহুকর্মও কি "প্রতিবিম্ব ব্যবহার করে" নয়? তা না হলে পার্থক্য কী?


4
আপনি আপনার নিজের প্রশ্নের উত্তরটি বেশ দিয়েছেন। আপনি 'প্রতিবিম্ব' সংজ্ঞাটি কীভাবে প্রতিবিম্বের instanceofউদাহরণ কিনা তা নির্ধারণ করে । অবশ্যই এটি সাধারণ ডেটা ব্যবহার এবং মেটাডেটার ব্যবহার getClass()ও বন্ধুদের মাধ্যমে কোথাও কোথাও রয়েছে তবে আপনি কার্যক্ষম সংজ্ঞাটি যেখানেই যেতে পারেন।
কিলিয়ান ফুট

returnবিবেচিত "স্ট্রাকচারাল প্রোগ্রামিং" এর ব্যবহার কি ?
এসএফ

উত্তর:


22

এটি উইকিপিডিয়া অনুসারে প্রতিবিম্ব সংজ্ঞা:

কম্পিউটার বিজ্ঞানে, প্রতিচ্ছবি হ'ল প্রক্রিয়া যার মাধ্যমে একটি কম্পিউটার প্রোগ্রাম পর্যবেক্ষণ করতে পারে (টাইপ ইন্ট্রোস্পেকশনটি করতে পারে) এবং রানটাইমের সময় নিজস্ব কাঠামো এবং আচরণ পরিবর্তন করতে পারে।

আমি নিজে এটি আরও ভাল বলতে পারিনি এবং আপনার প্রশ্নের গুরুত্বপূর্ণ অংশটি হাইলাইট করতে পারি। এটি বলেছিল, হ্যাঁ, instanceofপ্রতিবিম্ব ব্যবহার করে বিবেচনা করা হয়। প্রোগ্রামটি এর কাঠামো পর্যবেক্ষণ করে এবং প্রকারের অন্তঃনির্দেশ পরিচালনা করে ।


3
@ স্টিভেন জিউরিস: পার্থক্যটি হ'ল কোনও ধরণের নয়, if (true)একটি মানকে দেখায় । এ কারণেই এটি প্রতিবিম্ব হিসাবে বিবেচিত হয় না।
sleske

1
@ সালস্ক: আমি কেন এটি উল্লেখ করার কারণ ছিল কারণ কোনও প্রকারের পর্যবেক্ষণ করা এমন একটি প্রাথমিক বিষয়। এটি ছাড়া কোনও পলিমারফিজম হবে না। প্রযুক্তিগতভাবে বলার অর্থ এটি একটি সাধারণ ওভাররাইডকেও প্রতিফলন হিসাবে বিবেচনা করা যেতে পারে (বা কমপক্ষে ফলাফলগুলিও)। সংজ্ঞাটির দ্বিতীয় অংশটি ভুলে যাবেন না: এবং রানটাইম এর নিজস্ব কাঠামো এবং আচরণটি সংশোধন করুন। সব মিলিয়ে আমি এই উত্তরটিকে উস্কে দিয়েছি (আমার দ্বিতীয় মন্তব্যটি দেখুন) তবে ওপি থেকে প্রশ্নটি কোথা থেকে এসেছে তা আমি বুঝতে পারি। ; পি
স্টিভেন জিউরিস

1
প্রতিবিম্বের সেই সংজ্ঞা অনুসারে, সাধারণ বহুকর্মও কি একধরণের প্রতিবিম্ব হবে না?
বজার্ক ফ্রুন্ড-হ্যানসেন

4
@ বারজারেফ: আমি বলব "না", যেহেতু বহুবচন দ্বারা ব্যবহৃত ভার্চুয়াল প্রেরণটি ভাষা থেকেই স্পষ্টভাবে সম্পন্ন করা হয়, বরং অ্যাপ্লিকেশন কোডটি এর বৈশিষ্ট্যগুলি চিহ্নিত করার জন্য প্রশ্নের মধ্যে পরিষ্কারভাবে পরীক্ষা করে দেখা উচিত।
ডেভ শেরোহমান

2
@ ডেভ শেরোহমান: আমি আরও যোগ করেছি যে বেশিরভাগ কাজ (জাম্প টেবিল স্থাপন ইত্যাদি) রানাইয়ের সময় নয়, সংকলন সময়ে সম্পন্ন হয়।
টিএমএন

13

স্পষ্টতার খাতিরে, আমি দুটি উত্তর বিবেচনা করব।

তাত্ত্বিকভাবে , instanceofপ্রতিচ্ছবির একটি ফর্ম, যেমন ফ্যালকনের উত্তরে ব্যাখ্যা করা হয়েছে ।

কম্পিউটার বিজ্ঞানে, প্রতিচ্ছবি হ'ল প্রক্রিয়া যার মাধ্যমে একটি কম্পিউটার প্রোগ্রাম পর্যবেক্ষণ করতে পারে (টাইপ ইন্ট্রোস্পেকশনটি করতে পারে) এবং রানটাইমের সময় নিজস্ব কাঠামো এবং আচরণ পরিবর্তন করতে পারে।

যাইহোক, ব্যবহারিকভাবে , যখন কোনও প্রোগ্রামার প্রতিবিম্বটি ব্যবহার করার বিষয়ে কথা বলেন তিনি সাধারণত ভেরিয়েবল নির্দিষ্ট ধরণের কিনা তা যাচাই করার চেয়ে অনেক বেশি বোঝায়। এটি যেমন একটি প্রাথমিক ধারণা যা ছাড়া হল, পলিমরফিজম সম্ভব হবে না

মনে রাখবেন যে instanceofপ্রায়শই ব্যবহার করা কোডের গন্ধকে নির্দেশ করে এবং এর পরিবর্তে যথাযথ পলিমারফিজম প্রায়শই ব্যবহার করা যেতে পারে।


1
সম্ভাব্য কোড গন্ধের জন্য +1 - সর্বদা নয়, কেবল সম্ভাব্য
গ্যারি রোও

2

আপনি নিম্নলিখিত নিবন্ধে আকর্ষণীয় হতে পারে: http://java.sun.com/developer/technicalArticles/ALT/Riflection/

এই নিবন্ধটির মূলটি হ'ল একটি কোড স্নিপেট যেখানে তারা "ক্লাস" শ্রেণীর "isInstance" পদ্ধতিটি ব্যবহার করে "উদাহরণস্বরূপ" কীওয়ার্ডটি অনুকরণ করে যা জাভার প্রতিচ্ছবি বৈশিষ্ট্যের অংশ।


জাভা জন্য দুর্দান্ত ব্যাখ্যা।
ফ্যালকন

2

অন্যান্য উত্তরগুলির পরে, উইকিপিডিয়ায় সংজ্ঞাটি পরিবর্তন করা হয়েছে (আমি এই পরিবর্তনের সাথে একমত হয়েছি, তবে আমি যে এটি তৈরি করেছি তা নয়) বন্ধনীগুলির অংশটি সরাতে:

কম্পিউটার সায়েন্সে, প্রতিচ্ছবি হ'ল রানটাইমে কম্পিউটারের নিজস্ব কাঠামো এবং আচরণটি পরীক্ষা করার, আত্ম-পরীক্ষা করা এবং সংশোধন করার দক্ষতা।

https://en.wikedia.org/wiki/Type_introspection এছাড়াও বিশেষভাবে বলেছে

আত্মবিশ্বাস প্রতিবিম্বের সাথে বিভ্রান্ত করা উচিত নয়

আমি বিবেচনা চাই instanceofপ্রথম সংজ্ঞার আওতায় পড়ে: প্রোগ্রাম একটি মান, তার নিজস্ব কাঠামো না পরীক্ষা, এবং এটি প্রোগ্রাম গঠন (জাভা: প্রতিনিধিত্বমূলক কোনো মান সঙ্গে যুক্ত নয় java.lang.Class, java.reflect.Methodইত্যাদি); প্রতিফলনের হলমার্ক এ জাতীয় মানগুলির সাথে কাজ করছে।


-5

হ্যাঁ, "উদাহরণস্বরূপ" অপারেটর এটির একধরণের প্রতিবিম্ব। পূর্ববর্তী উত্তরগুলি আপনাকে বলে।

"রিফ্লেকশন" বা "অবজেক্ট / ক্লাস ইন্ট্রোস্পেকশন" এই দিনগুলিতে একটি হাইপ, তবে বেশ কিছু প্রোগ্রামিং ভাষাগুলি কিছু সময় থেকে সেই ধারণার কিছু ব্যবহার করেছে।

ডট নেট (জাভা ক্লোন), (মিস) প্রচুর ব্যবহার করে।


1
উউউহম, ... ডুড?
কনরাড রুডল্ফ

3
আপনার প্রথম বাক্যটি সঠিক, এবং পূর্ববর্তী উত্তরের মুখোমুখি। বাকিটা ঠিক ভুল।
ফ্রাঙ্ক শিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.