প্যাকেজ ছাড়া ক্লাসের নাম কীভাবে পাবেন?


199

সি # তে আমাদের কাছে Type.FullNameএবং Type.Nameনাম স্পেসের (জাভা-ওয়ার্ল্ডের প্যাকেজ) সাথে বা ছাড়াই কোনও প্রকারের (এই ক্ষেত্রে শ্রেণি) নাম পাওয়ার জন্য।

জাভা সমান কি Type.Name?

স্পষ্টতই Class.getName()প্যাকেজের নামটি ম্যানুয়ালি ব্যবহার করার এবং সেগুলি ফেলার চেয়ে আরও ভাল উপায় থাকতে হবে ।


1
আমি এ সম্পর্কে একটি তাত্ক্ষণিক অনুসন্ধান করেছি এবং গুগলে যে প্রথম ফলাফল পেয়েছি তা দেখে আমি মুগ্ধ হইনি তাই এটিকে একটি ফ্রিবি হিসাবে বিবেচনা করুন।
ওলা হার্ডাহাল

5
গুগল ভুলে যাও! চেহারায় প্রথম স্থানে জাভা মান বর্গ গ্রন্থাগার সম্পর্কে উত্তরের জন্য জাভা এপিআই ডক্স (javadocs ওরফে) আছেন: java.sun.com/javase/reference/api.jsp
স্টিফেন সি

উত্তর:


358

Class.getSimpleName()

উত্স কোড অনুসারে অন্তর্নিহিত শ্রেণীর সাধারণ নামটি দেয়। অন্তর্নিহিত শ্রেণি বেনামে থাকলে একটি খালি স্ট্রিং ফেরত দেয়।

অ্যারের সাধারণ নাম হ'ল "[]" সংযুক্ত যুক্ত উপাদানগুলির সহজ নাম। বিশেষত এমন অ্যারের সরল নাম যার উপাদানটির নাম বেনামে থাকে "[]"।

এটি আসলে নাম থেকে প্যাকেজটির তথ্য ছিনিয়ে নিচ্ছে তবে এটি আপনার কাছ থেকে লুকিয়ে রয়েছে।


এটি একটি বেনাম শ্রেণীর অভ্যন্তরীণ নামটি খালি স্ট্রিংয়ের সাথেও ম্যাপ করে এবং অ্যারে শ্রেণীর নামের সাথে স্টাফ করে।
স্টিফেন সি

4
আমি জানতাম না এটি খালি স্ট্রিংটি ফিরিয়ে দিতে পারে, এবং আইএমএইচও এটি একটি ডিজাইনের ত্রুটি রয়েছে। যদি কোনও সাধারণ নাম না থাকে তবে এটির ব্যতিক্রম হওয়া উচিত।
ফিনিউ

20

নিম্নলিখিত ফাংশনটি জেডিকে সংস্করণে 1.5 এবং ততোধিক কাজ করবে

public String getSimpleName()

14

যদি স্ট্যাকট্রেস এলিমেন্ট ব্যবহার করে থাকেন তবে:

String fullClassName = stackTraceElement.getClassName();
String simpleClassName = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);

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