जावा संशोधक (सार, अंतिम, सार्वजनिक, स्थिर, आदि) का एक उचित क्रम क्या है?


114

जावा संशोधक का एक उचित क्रम क्या है?

  • सार
  • अंतिम
  • देशी
  • निजी
  • संरक्षित
  • जनता
  • स्थिर
  • strictfp
  • सिंक्रनाइज़
  • क्षणिक
  • परिवर्तनशील

अपडेट करें

मैंने आदेश को अनुशंसित करने या न करने पर चर्चा को शांत करने के लिए शब्दांकन को उचित से अनुशंसित में बदल दिया है ।


यह मामूली बात नहीं है, और आपको इसके बारे में बहुत समय बर्बाद नहीं करना चाहिए। व्यक्तिगत रूप से मैं हमेशा एक्सेस मॉडिफायर लगाता हूं लेकिन उसके बाद भी मैं आपको बता नहीं सकता कि मैं आगे क्या करता हूं। यदि आप एक संदर्भ यहाँ चाहते हैं , लेकिन मुझे विश्वास नहीं है कि यह वहाँ भी निर्दिष्ट है।
लोर्ने का मार्कीट

9
मुझे आश्चर्य है कि यह एक "रचनात्मक नहीं" प्रश्न (करीबी अनुरोध) क्यों होना चाहिए। आप विनिर्देश में सिफारिश पा सकते हैं (मेरा उत्तर देखें) और इस सिफारिश का पालन करने से कोड की पठनीयता में सुधार होगा। यदि आप किसी भिन्न क्रम का उपयोग करते हैं तो स्टेटिक कोड विश्लेषक (जैसे सोनार) शिकायत करेगा।
FrVaBe

मैंने ओरेकल / सन जावा कोड कन्वेंशनों पर एक और नज़र डाली । इस मामले का भी उल्लेख नहीं किया गया है, एक जगह जहां आपको दिखना चाहिए और एक जगह जहां आप इसे प्रदर्शित करने की उम्मीद करेंगे।
लोर्ने का मार्कीट

@ ईजेबी कोड कन्वेंशन 1999 से हैं और इसे दृढ़ता से अपडेट करने की आवश्यकता है। मुझे आशा है कि वे इस विषय को शामिल करते हैं यदि वे कभी इन सम्मेलनों को फिर से छूते हैं क्योंकि यह वास्तव में एक अच्छी जगह है!
FrVaBe

1
क्या ग्रहण अपने आप संशोधक को छाँट सकता है? या कम से कम एक चेतावनी दें यदि वे अनसोल्ड हैं?
रोलैंड 16

जवाबों:


126

प्रथागत संशोधक के उपयोग के क्रम में बताया गया है जावा भाषा विशिष्टता (और नहीं जावा वर्चुअल मशीन विशिष्टता) के लिए जैसे वर्ग संशोधक आप निम्नलिखित परिभाषा (उद्धरण) मिलेगा:

ClassModifiers:
    ClassModifier
    ClassModifiers ClassModifier

ClassModifier: one of
    Annotation public protected private
    abstract static final strictfp

[....]

यदि दो या अधिक (अलग) वर्ग संशोधक एक वर्ग की घोषणा में दिखाई देते हैं, तो यह प्रथागत है, हालांकि आवश्यक नहीं है, कि वे क्रम में दिखाई देते हैं जो कि क्लासमोडिफायर के उत्पादन में ऊपर दिखाया गया है। (पैराग्राफ के तल पर छोटा पाठ!)

यह वाक्य आपको कई अन्य स्थानों पर मिलेगा जहां संशोधक का उपयोग निर्दिष्ट है, उदाहरण के लिए यहाँ क्षेत्र संशोधक के लिए।

अद्यतन : मैंने "प्रथागत" के साथ "निर्दिष्ट / अनुशंसित" को एक स्वीकार्य उत्तर देने के लिए बदल दिया। यदि आप टिप्पणियों को पढ़ते हैं, तो इसे ध्यान में रखें ;-) (इस स्पष्ट करने के लिए @EJP धन्यवाद) - फिर भी मैं प्रथागत आदेशका उपयोग करने की सिफारिश करूंगा।

Google जावा कल्पना में उल्लिखित प्रथागत आदेश का उपयोग करने की भी सिफारिश करता है।

public / protected / private 
abstract 
static 
final 
transient 
volatile 
synchronized 
native 
strictfp

अद्यतन :OpenJDK समुदाय में परियोजनाओं के लिएएक नई " जावा स्टाइल दिशानिर्देश " पहल है। इसमें एक संशोधक आदेश के लिए एक सिफारिश भी हैऔर इसमेंजावा 8 कानया डिफ़ॉल्ट संशोधकभी शामिल है।

public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp

1
सवाल था "जावा संशोधक का अनुशंसित आदेश क्या है?" और यह सवाल भाषा विनिर्देश में उत्तर है (और जैसा कि आदेश की आवश्यकता नहीं है, मैं कहूंगा कि यह विनिर्देश में अनुशंसित है)। JVM विनिर्देश वर्ग फ़ाइल प्रारूप के बारे में है न कि जावा स्रोत कोड। - वास्तव में आदेश कोई फर्क नहीं पड़ता, लेकिन यदि आप एक सिफारिश का पालन करते हैं तो आपका कोड दूसरों के लिए अधिक पठनीय होगा। इसलिए मुझे लगता है कि यह एक उचित सवाल है जहां सटीक उत्तर दिया जा सकता है। वैसे - स्टेटिक कोड एनालाइज़र (जैसे सोनार) गलत ऑर्डर के बारे में शिकायत करेगा।
FrVaBe

3
वाक्य यदि दो या अधिक (अलग) वर्ग संशोधक एक वर्ग घोषणा में दिखाई देते हैं, तो यह प्रथागत है, हालांकि आवश्यक नहीं है, कि वे उस क्रम में प्रकट होते हैं जो ClassModifier के उत्पादन में ऊपर दिखाया गया है। विशिष्टता का हिस्सा है!
FrVaBe

1
इस मामले में मैं चिल्लाना चाहता था, लेकिन मैंने पहले ही शांत कर दिया - इस बारे में खेद; ;-) - मैं मूल निवासी भी नहीं हूँ - इसलिए आप शायद भाषा व्याख्या पर सही हैं। मैं सिर्फ अपने जवाब के साथ कहना चाहता था कि एक बहुत ही आधिकारिक जगह है जहां जावा सोर्स कोड में संशोधक का क्रम संभाला जाता है - और मैं भाग्यशाली था जब मैंने खुद से वही सवाल पूछा। IMHO जावा भाषा विनिर्देश की तुलना में उत्तर खोजने के लिए कोई बेहतर जगह नहीं है।
FrVaBe


1
@EJP आपके पास उस विषय पर एक मजबूत राय (~ कोई अनुशंसित आदेश) नहीं है। क्या आप इसे उत्तर के रूप में प्रदान करना चाहेंगे? मैं मतदान को लेकर उत्सुक हूं।
FrVaBe

28

जावा वर्चुअल मशीन स्पेसिफिकेशन, टेबल 4.4 के अनुसार ऑर्डर का उपयोग करना उचित है

  • जनता
  • संरक्षित
  • निजी
  • सार
  • चूक
  • स्थिर
  • अंतिम
  • क्षणिक
  • परिवर्तनशील
  • सिंक्रनाइज़
  • देशी
  • strictfp

8
+1 आप अक्सर देखते हैं: "सार्वजनिक सार", "निजी स्थिर अंतिम" आदि कुछ IDEs (जैसे NetBeans) यहां तक कि कुछ शॉर्टकट, उदाहरण के लिए "PSF" या "PSF" है
puce

1
आप जावा भाषा विनिर्देश में अनुशंसित आदेश पा सकते हैं (और जावा वर्चुअल मशीन विशिष्टता नहीं!)। मेरे जवाब पर एक नजर।
FrVaBe

1
@FrVaBe आप ऐसी कोई चीज़ नहीं पा सकते हैं। शैली की सिफारिशों के साथ भाषा के व्याकरण को भ्रमित न करें।
लोर्ने का मार्कीस

@Puce: कुछ आईडीई (जैसे इंटेलीज आईडीईए) भी सही ढंग से संशोधक को सॉर्ट कर सकते हैं।
मोट

5

उनके अंतर मूल्यों के आधार पर।

संशोधक (जावा प्लेटफार्म SE 8)

  • 1: सार्वजनिक
  • 2: निजी
  • 4: संरक्षित
  • 8: स्थिर
  • 16: अंतिम
  • 32: सिंक्रनाइज़ किया गया
  • 64: अस्थिर
  • 128: क्षणिक
  • 256: देशी
  • 512: इंटरफ़ेस
  • 1024: सार
  • 2048: सख्त

1
इस उत्तर में "डिफ़ॉल्ट" कीवर्ड शामिल नहीं है
Sero

1
उनके अंतर मूल्यों का इससे क्या लेना-देना है?
लोरेन

0

मैं संशोधक अनुक्रम को याद करने के लिए दो नियमों का उपयोग करता हूं, लेकिन इसमें कड़ाई शामिल नहीं है, क्योंकि यह मेरे द्वारा कभी भी उपयोग नहीं किया गया है। FYI करें।

  1. सिंक्रनाइज़ मूल निवासी कम से कम प्राथमिकता वाले लोग हैं।

  2. पीपीपी एएस एफटीवी: पीपीपी {शोर ध्वनि} एएस {देखने} एफटीवी {फ्रांस टीवी}।

:)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.