वर्ग ऑब्जेक्ट के लिए उपयोग के लिए आप एक स्थिर संदर्भ
public final class ClassUtils {
public static final Class[] getClassContext() {
return new SecurityManager() {
protected Class[] getClassContext(){return super.getClassContext();}
}.getClassContext();
};
private ClassUtils() {};
public static final Class getMyClass() { return getClassContext()[2];}
public static final Class getCallingClass() { return getClassContext()[3];}
public static final Class getMainClass() {
Class[] c = getClassContext();
return c[c.length-1];
}
public static final void main(final String[] arg) {
System.out.println(getMyClass());
System.out.println(getCallingClass());
System.out.println(getMainClass());
}
}
जाहिर कर रहे हैं जब यहाँ सभी 3 कॉल
class ClassUtils
वापस आ जाएगी, लेकिन आप चित्र प्राप्त;
classcontext[0] is the securitymanager
classcontext[1] is the anonymous securitymanager
classcontext[2] is the class with this funky getclasscontext method
classcontext[3] is the calling class
classcontext[last entry] is the root class of this thread.
अच्छा चाल। आम तौर पर, कोई इसे मुख्य() से कॉल करेगा, इसलिए इस बिंदु पर केवल एक धागा है, लेकिन अगर इसे कहीं और कहा जाता है, तो हमारे पास इस धागे की समस्या को बेहतर तरीके से रखना चाहिए ... – PhiLho
कोई गारंटी मुख्य थीम नहीं है जब आप अन्य धागे से ऐप नाम ढूंढने का प्रयास करेंगे तो दौड़ें। मुख्य धागा सामान्य रूप से समाप्त हो सकता है और कुछ अन्य पृष्ठभूमि धागे अभी तक समाप्त नहीं हुए हैं। ऐसा नहीं लगता कि यह मुख्य धागे से दूसरे को इस चाल को करने के लिए वैध है। –