এটি কী: [লাজা.আল্যাং.অবজেক্ট ;?


110

আমি toStringকোনও ফাংশন কল থেকে প্রাপ্ত কোনও বস্তুর সাথে কল করলে আমি এটি পাই। আমি জানি যে স্ট্রিংটিতে অবজেক্টের ধরণটি এনকোড করা আছে তবে কীভাবে এটি পড়তে হয় তা আমি জানি না।

এ জাতীয় এনকোডিং কী বলা হয়?

উত্তর:


211

[Ljava.lang.Object;জন্য নাম Object[].class, java.lang.Classঅ্যারের শ্রেণি প্রতিনিধিত্ব করে Object

নামকরণ প্রকল্পটি এখানে নথিভুক্ত করা হয় Class.getName():

এই শ্রেণীর অবজেক্টটি যদি এমন রেফারেন্স টাইপ উপস্থাপন করে যা অ্যারে টাইপ নয় তবে জাভা ভাষা নির্দিষ্টকরণ ( §13.1 ) দ্বারা উল্লিখিত শ্রেণীর বাইনারি নামটি ফিরে আসে ।

যদি এই শ্রেণীর অবজেক্টটি কোনও আদিম ধরণের প্রতিনিধিত্ব করে বা void, তবে প্রত্যাবর্তিত নামটি আদিম ধরণের সাথে সম্পর্কিত জাভা ভাষার কীওয়ার্ড বা void

যদি এই শ্রেণীর অবজেক্টটি অ্যারেগুলির একটি শ্রেণির প্রতিনিধিত্ব করে, তবে নামের অভ্যন্তরীণ ফর্মটিতে '['অ্যারে নেস্টিংয়ের গভীরতা উপস্থাপনকারী এক বা একাধিক অক্ষরের পূর্বে উপাদান টাইপের নাম থাকে । উপাদান টাইপের নামের এনকোডিংটি নিম্নরূপ:

Element Type        Encoding
boolean             Z
byte                B
char                C
double              D
float               F
int                 I
long                J
short               S 
class or interface  Lclassname;

আপনার তালিকায় সর্বশেষ। এখানে কিছু উদাহরন:

// xxxxx varies
System.out.println(new int[0][0][7]); // [[[I@xxxxx
System.out.println(new String[4][2]); // [[Ljava.lang.String;@xxxxx
System.out.println(new boolean[256]); // [Z@xxxxx

কারণ toString()অ্যারে আয় পদ্ধতি Stringএই বিন্যাসে কারণ অ্যারে না @Overrideপদ্ধতি থেকে উত্তরাধিকারসূত্রে Object, যা নিম্নরূপ নিদিষ্ট হয়:

toStringবর্গ জন্য পদ্ধতিObject @ একটি স্ট্রিং বর্গ যা বস্তুর একটি দৃষ্টান্ত এ সাইন ইন চরিত্র `অবস্থিত তার নাম নিয়ে গঠিত ', এবং বস্তুর হ্যাশ কোডের স্বাক্ষরবিহীন হেক্সাডেসিমেল উপস্থাপনা ফেরৎ। অন্য কথায়, এই পদ্ধতিটি এর মান সমান একটি স্ট্রিং প্রদান করে:

getClass().getName() + '@' + Integer.toHexString(hashCode())

দ্রষ্টব্য : আপনিtoString()উপরের স্পেসিফিকেশন অনুসরণ করতে কোনও যেকোন স্বেচ্ছাসেবীরউপর নির্ভর করতে পারবেন না, যেহেতু তারা@Overrideঅন্য কিছু ফেরতদিতে (এবং সাধারণতএটি করতেপারে)। একটি স্বেচ্ছাসেবী বস্তুর প্রকারের নিরীক্ষণের আরও নির্ভরযোগ্য উপায় হ'লgetClass()এটি (যেfinalপদ্ধতিটি উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছিলObject) এবং তারপরেপ্রত্যাবর্তিতবস্তুর প্রতিফলনClass । আদর্শভাবে, যদিও, API এর এমন নকশা করা উচিত ছিল যে প্রতিবিম্বটি প্রয়োজনীয় নয় ( কার্যকর জাভা 2 য় সংস্করণ, আইটেম 53: প্রতিচ্ছবিতে ইন্টারফেসগুলি পছন্দ করুন )।


toStringঅ্যারেগুলির জন্য আরও "দরকারী"

java.util.ArraystoStringআদিমস্ত অ্যারেগুলির জন্য ওভারলোড সরবরাহ করে এবং Object[]। এছাড়াও deepToStringআপনি নেস্টেড অ্যারে ব্যবহার করতে চাইতে পারেন is

এখানে কিছু উদাহরন:

int[] nums = { 1, 2, 3 };

System.out.println(nums);
// [I@xxxxx

System.out.println(Arrays.toString(nums));
// [1, 2, 3]

int[][] table = {
        { 1, },
        { 2, 3, },
        { 4, 5, 6, },
};

System.out.println(Arrays.toString(table));
// [[I@xxxxx, [I@yyyyy, [I@zzzzz]

System.out.println(Arrays.deepToString(table));
// [[1], [2, 3], [4, 5, 6]]

এছাড়াও রয়েছে Arrays.equalsএবং Arrays.deepEqualsঅন্যান্য বিভিন্ন অ্যারে সম্পর্কিত ইউটিলিটি পদ্ধতির মধ্যে তাদের উপাদানগুলির দ্বারা অ্যারে সমতা তুলনা সম্পাদন করে।

সম্পর্কিত প্রশ্নগুলি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.