इन दोनों जावा वर्गों लें:दो अपरिवर्तनीय वस्तुओं को बनाने का कोई अच्छा तरीका एक दूसरे को संदर्भित करता है?
class User {
final Inventory inventory;
User (Inventory inv) {
inventory = inv;
}
}
class Inventory {
final User owner;
Inventory (User own) {
owner = own;
}
}
वहाँ किसी भी तरह से without using reflection* इस बंद को खींचने के लिए है? मुझे वास्तव में यह उम्मीद नहीं है, लेकिन यह पूछने में कोई दिक्कत नहीं हो सकती है।
अद्यतन: बाईटकोड निर्माण में के बाद से दो चरणों (1. आवंटित वस्तु, 2. कॉल निर्माता **) इस हो सकता है (ab) हस्तलिखित बाईटकोड या एक कस्टम संकलक के साथ, यह करने के लिए इस्तेमाल किया गया है? मैं पहले दोनों ऑब्जेक्ट्स के लिए चरण 1 करने के बारे में बात कर रहा हूं, फिर चरण 1 से संदर्भों का उपयोग करके दोनों के लिए चरण 2। बेशक ऐसा कुछ बोझिल होगा, और सवाल का यह हिस्सा अकादमिक है।
(* क्योंकि प्रतिबिंब एक सुरक्षा प्रबंधक के साथ परेशानी दे सकता है)
(** कहते हैं अपने सीमित ज्ञान)
परिपत्र निर्भरता अक्सर एक अच्छा विचार नहीं है – Bozho
मुझे खेद है, क्या आप समस्या पर थोड़ा सा विस्तार कर सकते हैं। मुझे नहीं पता कि समस्या क्या है, क्योंकि आपके पास पहले से ही अन्य ऑब्जेक्ट का संदर्भ है? – Anders
@ एंडर्स समस्या यह है कि दोनों को निर्माण समय पर दूसरे के संदर्भ की आवश्यकता होती है, और ऐसा संदर्भ निर्माण के बाद ही उपलब्ध है। –