জেআরএল লিখেছেন:
না এইটা না, ...
আপনি প্রায়শই এটির দিকে নজর রাখেন, আপনি কাকে বেশি বিশ্বাস করেন it
জেএলএসের মতে, হ্যাঁ, এটি । বিশেষত যদি আপনি এই প্রশ্নটি পুনরায় উত্তর দেন: "আসলেই কি null
টাইপ হয় Object
?" উপরে মাইকেল বর্গওয়ার্ট দ্বারা উদ্ধৃত জেএলএস ৪.১ ছাড়াও :
জেএলএস 3.10.7 দেখুন :
একটি নাল আক্ষরিক সর্বদা নাল টাইপের হয়।
এবং জেএলএস 4.10 :
টি টাইপ টির উপপ্রকারগুলি হ'ল সমস্ত প্রকারের ইউ যেমন টি টি হ'ল একটি সুপার টাইপ , এবং নাল প্রকার।
বা জেএলএস 4.10.2 :
নাল টাইপের সরাসরি সুপারটাইপগুলি নাল টাইপ ব্যতীত অন্য সমস্ত রেফারেন্স টাইপ।
[আমার দ্বারা জোর দেওয়া।]
গ্রহনটি 2019-09 এর সংকলক অনুসারে এটি নয় :
true.toString(); // Cannot invoke toString() on the primitive type boolean
null.toString(); // Cannot invoke toString() on the primitive type null
ওপেনজেডিকে 12.0.1 অনুসারে javac
এটি হ'ল :
true.toString(); // error: boolean cannot be dereferenced
null.toString(); // error: <null> cannot be dereferenced
কোণ বন্ধনীগুলি বোঝায় যে null
এটি আদিম ধরণের ব্যতীত অন্য কোনও। এবং জেএলএস ৪.১ অনুসারে :
জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজে দুই ধরণের প্রকার রয়েছে: আদিম ধরণের (...) এবং রেফারেন্স প্রকার (...)।
যদি এটি এক না হয় তবে এটি অন্যটি।
ক্লডিউ লিখেছেন:
নাল একরকম কুৎসিত।
অ বিপরীত, null
সুন্দর। পরিবর্তে কোনও রেফারেন্স টাইপের ভেরিয়েবলের জন্য আপনি ডিফল্ট মান হিসাবে কী প্রস্তাব করবেন? একটি নির্বিচারে বিট সংমিশ্রণ? লঙ্ঘন অ্যাক্সেস বা এমনকি আরও খারাপ, পয়েন্টার হেল্প স্বাগতম!
জোছিম সৌর লিখেছেন:
নাল একটি প্রকার এবং মান।
আসলে আছে তিনটি সাথে আইটেম নাল (এছাড়াও দেখুন JLS 3.10.7 ):
- (অন্যথায় নামবিহীন) নাল টাইপ ।
null
আক্ষরিক ।
- নাল রেফারেন্স মান। (সাধারণত নাল মান বা কেবল নাল হিসাবে সংক্ষেপিত iated )
(১) উল্লেখ্য যে উপরে উল্লিখিত জেএলএস ৪.১০.২ অনুসারে নাল টাইপটি কেবলমাত্র ইন্টারফেসের জন্য নয়, ক্লাসগুলির জন্যও একাধিক উত্তরাধিকার ব্যবহার করে। যা আমরা সবাই জানি আমাদের অ্যাপ্লিকেশন প্রোগ্রামারদের পক্ষে সম্ভব নয়।
(2) নাল আক্ষরিক হিসাবে বর্ণিত হতে পারে একটি পরিবর্তনশীল হিসাবে কল্পনা করা যেতে পারে:
JVM_global final null_type null = new null_type();
জেএলএস 3.9 নোট করুন :
কীওয়ার্ড হওয়ার জন্য বিভিন্ন ধরণের চরিত্রের সিকোয়েন্সগুলি ভুলভাবে অনুমান করা হয়:
বিষয়ে null instanceof <any type>
জেএলএস ৪.১০.২ মাথায় রেখে (n নাল টাইপ প্রতিটি ধরণের একটি উপপ্রকার ") এর null instanceof <any type>
মূল্যায়ন করার কথা ভাবা true
উচিত, তাই না? প্রথম দর্শনে, হ্যাঁ, তবে জেএলএস 15.20.2 অন্তর্দৃষ্টি উত্তর দেয়:
[...] ফলাফলের এর instanceof
অপারেটর হয় true
যদি মান এর RelationalExpression নয়null
[...]। অন্যথায় ফলাফল হয়false
।
[আমার দ্বারা জোর দেওয়া।]
নিজেকে আরও জিজ্ঞাসা করুন কী আরও বোধ করে (কোনও অ্যাপ্লিকেশন প্রোগ্রামারের দৃষ্টিভঙ্গি থেকে):
প্রদান false
এবং এইভাবে ইঙ্গিত দেয় যে একটি রেফারেন্স এক্সপ্রেশন আমাদের কাছে প্রকাশিত প্রকারের নয়, অর্থাত্ ইঙ্গিত করে যে এটি আমাদের জন্য দরকারী কিছু উল্লেখ করা হচ্ছে না ating
বা দিলে true
, আমাদের জানিয়ে দেয় যে অভিব্যক্তিটি একটি বিশেষ রেফারেন্সকে নাল রেফারেন্সের সাথে মূল্যায়ন করে , একটি "অবজেক্ট" উল্লেখ করে আমরা জানি না এটি বিদ্যমান কিনা এবং কোন বিশেষ নাল ধরণের যার কোনও নাম নেই, তা প্রকাশিত হয় নি আমাদের কিন্তু নাল আক্ষরিক মাধ্যমে , একাধিক উত্তরাধিকার সহ যে কোনও ধরণের একটি উপপ্রকার এবং যাইহোক এড়ানো হবে? আরও ব্যবহারিক উদাহরণ বিবেচনা করুন:
class Car implements Vehicle {
...
Vehicle car = null;
...
boolean b = car instanceof Car; // True? There's not even an instance
... // which could be of type Car.
যা এছাড়াও বাড়ে:
কেন instanceof
কিছু বলার উপযুক্ত উপায় নয়null
অবজেক্ট-নেস ?
এটা তোলে বলা হচ্ছে instanceof
না sameorsubtypeof
। এর অর্থ আমরা একটি উদাহরণের ধরণের সাথে দুটি প্রকারের সাথে তুলনা করছি। এখন null
অর্থ: "কোনও উদাহরণ নেই" এবং যদি কোনও উদাহরণ না থাকে তবে উদাহরণের ধরণ নেই। এটি সুস্পষ্ট যে কোনও কিছুর সাথে কোনও কিছুর তুলনা করা বাড়ে যাবার কথা false
।
বা একটি "আরও" বাস্তব বিশ্বের উদাহরণে:
- আমার হাতে একটি আপেল ( = রেফারেন্স টাইপ ) এর একটি বাস্তব আকারের ছবি রয়েছে যার উপরে »বিগ অ্যাপল = ( = রেফারেন্স টাইপের নাম ) লেখা আছে written
- আমার সামনে একটি টেবিল ( = গাদা ) রয়েছে।
- টেবিলে যদি কোনও আপেল ( = উদাহরণ ) থাকে তবে এটির সাথে একটি কর্ড ( = রেফারেন্স ) সংযুক্ত রয়েছে।
- আমি এই কর্ডের অন্য প্রান্তটি আমার হাতে ধরে রেখেছি ( = রেফারেন্স ভেরিয়েবল )।
- আমি কর্ড বরাবর আপেল ট্রেস এবং এটি আমার ছবির সাথে তুলনা ( = উদাহরণস্বরূপ )।
- আপেলটি যদি আকারের চেয়ে বড় আকারের বা বড় হয় তবে »বিগ অ্যাপল writing লেখাটি এটি প্রয়োগ করে ( = সত্য )।
- যদি এটি ছোট হয়, তবে ( = মিথ্যা নয়) ) নয়।
- যদি টেবিলে কোনও আপেল না থাকে (= কোনও উদাহরণ নেই ) এবং সুতরাং, কোনও কর্ড উপস্থিত নেই ( = নাল ) তবে লেখাটি ( = মিথ্যা ) প্রযোজ্য নয় । কারণ: কোনও আপেল বড় আপেল নয়? না এইটা না.
মাইকেল যেমন যোগফল দিয়েছেন: "নাল স্পেশাল" আসলেই।