पैकेज के बिना एक वर्ग का नाम कैसे प्राप्त करें?


199

सी # में हम है Type.FullNameऔर Type.Nameसाथ या नाम स्थान (जावा-दुनिया में पैकेज) के बिना एक प्रकार (इस मामले में वर्ग) के नाम पर प्राप्त करने के लिए।

जावा किसके समतुल्य है Type.Name?

स्पष्ट रूप से इसका उपयोग करने Class.getName()और मैन्युअल रूप से पैकेज नाम से पट्टी करने से बेहतर तरीका होना चाहिए ।


1
मैंने इस पर एक त्वरित खोज की और पहले परिणामों से प्रभावित नहीं था जो मुझे Google पर मिले इसलिए इसे एक फ्रीबी के रूप में मानते हैं।
बजे ओला हेरहदहल

5
Google को भूल जाओ! देखो के लिए पहली जगह जावा मानक वर्ग पुस्तकालय के बारे में जवाब के लिए जावा एपीआई डॉक्स (javadocs उर्फ) कर रहे हैं: java.sun.com/javase/reference/api.jsp
स्टीफन सी

जवाबों:


358

Class.getSimpleName()

स्रोत कोड में दिए अनुसार अंतर्निहित वर्ग का सरल नाम लौटाता है। यदि कोई अंतर्निहित वर्ग अनाम है, तो एक रिक्त स्ट्रिंग देता है।

किसी सरणी का सरल नाम "[]" के साथ घटक प्रकार का सरल नाम है। विशेष रूप से एक सरणी का सरल नाम जिसका घटक प्रकार अनाम है "[]"।

यह वास्तव में नाम से पैकेज की जानकारी छीन रहा है, लेकिन यह आपसे छिपा हुआ है।


यह एक अनाम वर्ग के आंतरिक नाम को एक खाली स्ट्रिंग में मैप करता है और सरणी वर्ग के नामों के साथ सामान करता है।
स्टीफन सी

4
मुझे नहीं पता था कि यह एक खाली स्ट्रिंग लौटा सकता है, और IMHO यह एक डिजाइन दोष है। यदि कोई सरल नाम नहीं है, तो इसे अपवाद फेंक देना चाहिए।
13:22

20

निम्न कार्य JDK संस्करण 1.5 और इसके बाद के संस्करण में काम करेगा।

public String getSimpleName()

14

यदि StackTraceElement का उपयोग कर रहे हैं, तो उपयोग करें:

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

System.out.println(simpleClassName);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.