"এবং এখন, দিয়েগো থেকে একটি সংক্ষিপ্ত পাঠ। সংক্ষিপ্ত এবং বিন্দুতে। রেফারেন্স টাইপ রূপান্তর সম্পর্কে।"
"আসুন অবজেক্ট ভেরিয়েবল দিয়ে শুরু করা যাক। আপনি এই ধরনের ভেরিয়েবলের জন্য যেকোনও রেফারেন্স টাইপ বরাদ্দ করতে পারেন ( রূপান্তর প্রশস্ত করা )। তবে, অ্যাসাইনমেন্টটি অন্য দিকে করতে ( সংকীর্ণ রূপান্তর ), আপনাকে অবশ্যই একটি কাস্ট অপারেশনকে স্পষ্টভাবে নির্দেশ করতে হবে:"
কোড | বর্ণনা |
---|---|
|
একটি সাধারণ প্রসারিত রেফারেন্স রূপান্তর |
|
একটি সাধারণ সংকীর্ণ রেফারেন্স রূপান্তর |
|
প্রসারিত রূপান্তর. |
|
রানটাইম ত্রুটি! আপনি একটি স্ট্রিং রেফারেন্সে একটি পূর্ণসংখ্যা রেফারেন্স নিক্ষেপ করতে পারবেন না। |
|
রানটাইম ত্রুটি! আপনি একটি ফ্লোট রেফারেন্সে একটি পূর্ণসংখ্যা রেফারেন্স কাস্ট করতে পারবেন না। |
|
একই ধরনের রূপান্তর. একটি সংকীর্ণ রেফারেন্স রূপান্তর. |
" একটি প্রসারিত বা সংকীর্ণ রেফারেন্স রূপান্তর বস্তুটিকে কোনোভাবেই পরিবর্তন করে না। সংকীর্ণ (বা প্রশস্তকরণ) অংশটি বিশেষভাবে বোঝায় যে অ্যাসাইনমেন্ট অপারেশনে ভেরিয়েবলের টাইপ-চেকিং এবং এর নতুন মান অন্তর্ভুক্ত (অন্তর্ভুক্ত নয়)। "
"এটি বিরল উদাহরণ যেখানে সবকিছু পরিষ্কার।"
" এই উদাহরণগুলিতে ত্রুটিগুলি এড়াতে , আমাদের কাছে অবজেক্ট ভেরিয়েবল দ্বারা কোন প্রকার উল্লেখ করা হয়েছে তা খুঁজে বের করার একটি উপায় রয়েছে: "
int i = 5;
float f = 444.23f;
String s = "17";
Object o = f; // o stores a Float
if (o instanceof Integer)
{
Integer i2 = (Integer) o;
}
else if (o instanceof Float)
{
Float f2 = (Float) o; // This if block will be executed
}
else if (o instanceof String)
{
String s2 = (String) o;
}
"প্রতিটি প্রসারিত রূপান্তরের আগে আপনার এই চেকটি করা উচিত যদি না আপনি বস্তুর প্রকার সম্পর্কে 100% নিশ্চিত হন।"
"বুঝেছি."
GO TO FULL VERSION