2011-08-13 10 views
11

मुझे लगता है कि मैं पहुंच के उपयोग और गैर-पहुंच संशोधक के क्रम में भ्रमित हो रहा हूं। उदाहरण के लिएजावा संशोधक वाक्यविन्यास और प्रारूप

abstract void go() 
abstract public void go() 
public final void go() 
void final go() 

final class Test{} 
class final Test{} 
final abstract class Test{} 
abstract final Test{} 

मुझे कभी नहीं पता कि सही क्रम क्या है और कभी-कभी मुझे यह गलत लगता है क्योंकि बहुत सारे संभावित संयोजन हैं। क्या कोई निश्चित गाइड है जिसके बारे में दूसरे के सामने आना चाहिए?

क्या प्रारूप और क्रम में कोई विवरण है जिसमें वे कोड में दिखने हैं? मैं एक वाक्यविन्यास गाइड के साथ आने की कोशिश कर रहा हूं लेकिन मुझे यकीन नहीं है कि यह 100% सही है या नहीं। यहां यह है:

Methods: 
[access modifier | nonaccess modifier] return-type method-name 

Classes: 
[access modifier | nonaccess modifier] class class-name 

Interfaces: 
[access modifier | nonaccess modifier] interface interface-name  

Variables: 
[access modifier | nonaccess modifier] variable-type variale-name 
+0

कोई सही आदेश नहीं है, वास्तविक प्रश्न नहीं है। – EJP

उत्तर

18

जावा प्रोग्रामिंग भाषा की आधिकारिक grammar से (सरलीकृत):

Modifier: 
    Annotation | public | protected | private 
    static | abstract | final | native | synchronized 
    transient | volatile | strictfp 

ClassOrInterfaceDeclaration: 
     {Modifier} (ClassDeclaration | InterfaceDeclaration) 

ClassBodyDeclaration: 
     {Modifier} MethodOrFieldDecl 

MethodOrFieldDecl: 
     Type Identifier MethodOrFieldRest 

तो, वर्गों और इंटरफेस के लिए, संशोधक हमेशाclass कीवर्ड से पहले दिखाई देना चाहिए, और किसी भी क्रम में। उदा।, final public class मान्य है, लेकिन class final नहीं है। विधियों और क्षेत्रों के लिए, यह वही है, लेकिन संशोधक प्रकार से पहले प्रकट होना चाहिए।

+3

नोट: संशोधक का कोई भी आदेश ** मान्य ** है, लेकिन यदि कोड में सभी कोड एक सतत क्रम का उपयोग करते हैं तो कोड पढ़ने वाले लोगों के लिए यह आसान है। इसकी वजह से, एक * पारंपरिक * ऑर्डर है [(जावा स्पेक 8.3.1 के अंत में छोटी-छोटी वाक्य देखें)] (http://docs.oracle.com/javase/specs/jls/se7/html/jls -8.html # जेएलएस-8.3.1) जिसे व्यापक रूप से अपनाया गया है, [उदाहरण के लिए Google द्वारा] (https://google-styleguide.googlecode.com/svn/trunk/javaguide.html#s4.8.7-modifiers); कई जावा उपकरण इस आदेश को प्रोत्साहित करते हैं। – ToolmakerSteve

+2

ध्यान दें कि जावा 8 इंटरफ़ेस विधि घोषणाओं में 'डिफ़ॉल्ट' जोड़ता है: http://docs.oracle.com/javase/specs/jls/se8/html/jls-19.html#jls-19-9 जो क्रम में व्याकरण 'सार्वजनिक' और 'अमूर्त' के बाद आता है। –

2

संशोधक class या एक प्रकार से पहले जाते हैं। JavaLanguageSpecification के अनुसार, संशोधक के बीच आदेश कोई फर्क नहीं पड़ता।

11

http://checkstyle.sourceforge.net/config_modifier.html देखें।

सही (या बल्कि, पारंपरिक) आदेश है:

  1. सार्वजनिक
  2. संरक्षित
  3. निजी
  4. सार
  5. स्थिर
  6. अंतिम
  7. क्षणिक
  8. अस्थिर
  9. सिंक्रनाइज़
  10. देशी
  11. strictfp

यह आदेश कुछ दिनों जावा में प्रोग्रामिंग के बाद अपने मन को स्वाभाविक रूप से आना चाहिए।

2

हां, Java Language Specification है, जो भाषा में मान्य वाक्यविन्यास समझाता है और coding conventions used by Oracle/Sun भी है, जो थोड़ा पुराना है लेकिन अभी भी बहुत सी चीजें बताता है।

3
बस के रूप में अंग्रेजी भाषा में

, विशेषण (संशोधक ऐसे public, static, volatile, आदि) संज्ञा वे वर्णन (class, interface, या int या String के रूप में इस तरह के किसी भी प्रकार के) पूर्व में होना। संशोधक का क्रम भाषा से कोई फर्क नहीं पड़ता, लेकिन कोड पढ़ने से आप जल्दी से अधिक प्राकृतिक महसूस करेंगे।

संबंधित मुद्दे