का कहना है कि मेरे पास एक ही कक्षा के 2 उदाहरण हैं, लेकिन वे निर्माण समय पर निर्धारित अंतिम बूलियन क्षेत्र के आधार पर अलग-अलग व्यवहार करते हैं (विभिन्न कोड पथों का पालन करें)। तो कुछ की तरह: flag
के लिए विभिन्न मूल्यों के साथ Foo
कीमॉडर्म JVMs एक ही कक्षा के अलग-अलग उदाहरणों को अलग-अलग अनुकूलित कर सकता है?
public class Foo {
private final boolean flag;
public Foo(boolean flagValue) {
this.flag = flagValue;
}
public void f() {
if (flag) {
doSomething();
} else {
doSomethingElse();
}
}
}
2 उदाहरणों सिद्धांत रूप में, 2 अलग विधानसभाओं द्वारा समर्थित किया जा सकता है जिससे अगर (काल्पनिक उदाहरण के लिए खेद है, इसके सरलतम एक मैं कर सकता की लागत को नष्ट करने साथ आएं)।
तो मेरा सवाल है - क्या कोई भी जेवीएम वास्तव में ऐसा करता है? या एक एकल वर्ग हमेशा एक असेंबली द्वारा समर्थित है?
जो आप वर्णन कर रहे हैं वह सबक्लासिंग की तरह बहुत भयानक लगता है, क्या आप स्पष्ट कर सकते हैं कि यह क्यों काम नहीं करेगा? मैं समस्या की सीमाओं को समझने की कोशिश कर रहा हूं चुनौतीपूर्ण नहीं हूं। – Taylor
सभी उदाहरण एक ही कोड साझा करते हैं। आपका प्रश्न समझ में नहीं आता है। – EJP
@ टेलर मुझे क्षमा करें यदि मैं ओपी की व्याख्या करने की हिम्मत करता हूं, लेकिन मुझे लगता है कि वह जो भी पूछ रहा है वह उचित पैटर्न नहीं है (जो स्पष्ट रूप से विरासत होगा), लेकिन यदि JVMs "बुद्धिमान" हैं जो उपयोग को हटाने के लिए पर्याप्त हैं 'फ्लैग' वैरिएबल और पूरे वर्ग के लिए दो अलग-अलग बाइटकोड उत्पन्न करें (एक' सत्य 'शाखाओं के अनुरूप, और दूसरा' झूठी 'के लिए)। –