मैं कक्षा बनाने के लिए जावासिस्ट का उपयोग करता हूं। और टेस्ट स्वीट, जब एक दूसरे टेस्ट एक ही कक्षा बनाने की कोशिश में, यह pool.makeClass(...)
में विफल रहता है क्योंकि वर्ग जमे हुए है (यानी पहले से ही toClass()
के माध्यम से बनाया।जावस्सिस्ट: कक्षा को फिर से बनाना - पहले हटाएं, या डिफ्रॉस्ट() और संशोधित करें?
क्या तरीका इस पर काबू पाने के लिए है? आदर्श रूप में, पहला परीक्षण करना चाहिए किसी भी तरह वर्ग को नष्ट - शायद classloader से उतारना -। लेकिन जैसा कि मैंने in JLS पढ़ते हैं, अनलोड आपरेशन विश्वसनीय नहीं है
तो शायद वैकल्पिक हल वर्ग कोड चाहे वह मौजूद बनाने में जांच करने के लिए है, और यह करता है, defrost()
यह, सभी सदस्यों को हटा दें, और इसे फिर से बनाएं।
कोई अन्य विचार?
या जवासिस्ट के माध्यम से वर्ग को हटाने के लिए कुछ विश्वसनीय तरीका है?
'क्लासलोडर' से उतारना अविश्वसनीय नहीं है - यह असंभव है। एक वर्ग को अनलोड किया जा सकता है यदि यह * और * इसका 'क्लासलोडर' पहुंच योग्य नहीं हो जाता है, लेकिन चूंकि प्रत्येक वर्ग अपने लोडर को संदर्भित करती है जिसका अर्थ है कि * इस लोडर द्वारा लोड किए गए सभी * वर्ग भी पहुंच योग्य नहीं हो सकते हैं। लेकिन आप एक * अलग * 'क्लासलोडर' का उपयोग कर कक्षा बना सकते हैं। खैर, औपचारिक रूप से यह एक ही नाम (और शायद वही बाइट कोड) के साथ एक अलग वर्ग है। – Holger
ऐसा लगता है कि उत्तर ... यदि आप इसे डालते हैं, तो मैं स्वीकार करूंगा। –