2012-06-20 18 views
7

में स्थिर प्रारंभिक ब्लॉक से वापस कैसे लौटें मैं स्थिर ब्लॉक से वापस लौटना चाहता हूं।जावा

ऐसा लगता है कि रिटर्न और ब्रेक स्टेटमेंट काम नहीं करता है। क्या कोई विकल्प है।

मुझे पता है कि खराब कामकाज एक ध्वज बना सकता है और जारी रखने के लिए ध्वज की जांच कर सकता है या नहीं।

मैं समझता हूं कि प्रारंभिक ब्लॉक कंप्यूटेशंस करने के लिए नहीं हैं बल्कि क्लास लोडिंग के दौरान मूल प्रारंभिकरण के लिए हैं।

+3

कृपया अपना स्रोत कोड –

+0

प्रदान करें मैं समस्या को समझ नहीं सकता। कृपया इसे स्पष्ट रूप से समझाएं या आसानी से समझने के लिए अपना कोड प्रदान करें। –

+1

@ कालाई मुझे लगता है कि उनका मतलब है कि 'वापसी' को प्रारंभकर्ता ब्लॉक में उपयोग नहीं किया जा सकता है। जेएलएस 14.17: "[...] यह एक संकलन-समय त्रुटि है यदि एक वापसी विवरण एक आवृत्ति प्रारंभकर्ता या एक स्थिर प्रारंभकर्ता [...]" –

उत्तर

7

return का उपयोग करने के बजाय बस अपने सशर्त कोड को if में लपेटें।

18

प्रतिनिधि एक निजी स्थिर विधि के लिए कोड:

static { 
    initialize(); 
} 

private static void initialize() { 
    foo(); 
    if (someCondition) { 
     return; 
    } 
    bar(); 
} 
+0

ब्लॉक इनलाइन ब्लॉक लिखने के लिए क्लीनर तरीका है। –

0

आप एक स्थिर प्रारंभकर्ता ब्लॉक से वापस नहीं लौट सकते। वापस लौटने के लिए कहीं नहीं है। लेकिन यह जरूरी नहीं होना चाहिए। आप अपने कोड को "एकल प्रविष्टि, एकल निकास" के रूप में पुन: स्थापित करने में सक्षम होना चाहिए।

+0

मुझे इस कथन से सहमत होना होगा, यह कोड को बहुत साफ (और पढ़ने में आसान) प्रदान करेगा। – Anders

0

आप स्थिर ब्लॉक से वापस नहीं आ सकते हैं लेकिन कुछ अन्य फ़ंक्शन का उपयोग करने के लिए बेहतर है जो आपके तर्क को निष्पादित करेंगे और ब्लॉक पर वापस आ जाएंगे।

1

स्टेटिक प्रारंभकर्ताओं के पास कोई व्यवसाय जटिल नहीं है, इसलिए शायद यह एक बुरा विचार है (भले ही आप एसईएसई नहीं खरीदते)।

वापसी प्राप्त करने का न्यूनतम तरीका लेबल वाले ब्रेक का उपयोग करना है।

static { 
    init: { 
     ... 
      break init; 
    } 
} 

वे बहुत दुर्लभ हैं, आम तौर पर नेस्टेड for छोरों में प्रकट हो। नवीनता पाठक को टिप सकती है कि कुछ हद तक चल रहा है।