mainपहचानकर्ता के रूप में इसका उपयोग कैसे नहीं किया जा सकता है जबकि इसे "मुख्य" विधि घोषित करने के लिए पहचानकर्ता के रूप में उपयोग किया जाता है?
इस तरह के एक क्लासिक मुहावरे के लिए:
public class Foo{
public static void main(String[] args){
}
}
main एक कीवर्ड नहीं है और यह शायद जावा में स्पष्ट रेट्रो संगतता कारणों के लिए एक कीवर्ड नहीं होगा।
सवाल के बारे में, mainएक अच्छा पहचानकर्ता है?
पहली: एक संकलक के लिए मान्य जरूरी अच्छा नहीं है।
उदाहरण के लिए जो java1234विकल्प प्रस्तावित है वह भी एक वैध पहचानकर्ता है लेकिन वास्तव में इससे बचना चाहिए।
mainका विशेष रूप से और महत्वपूर्ण अर्थ है: इसका उपयोग javaकमांड लाइन द्वारा निष्पादित वर्गों और जार के प्रवेश बिंदु विधि के रूप में किया जाता है । कमांड लाइन द्वारा उपयोग किए जाने वाले मानदंडों को भरने वाले विधि नाम
का उपयोग करना केवल भ्रामक होगा, जबकि इसे चर नाम या वर्ग नाम के रूप में उपयोग किया जा सकता है।
उदाहरण के लिए, आवेदन के वर्ग के रूप में एक आवेदन के प्रवेश बिंदु का प्रतिनिधित्व करने वाले वर्ग को परिभाषित करना स्वीकार्य है और इसलिए इसे चर नाम के रूप में भी उपयोग किया जा सकता है: mainjava
Main
public class Main {
public static void main(String args[]){
Main main = new Main();
// ...
}
}
एक सामान्य तरीके से, जावा में, कई पात्रों या "शब्दों" को संकलक के लिए वैध पहचानकर्ता माना जाता है, लेकिन ग्राहक कोड में उपयोग किए जाने के लिए दृढ़ता से हतोत्साहित किया जाता है (लेकिन उत्पन्न कोड ऐसा कर सकते हैं: उदाहरण के लिए नेस्टेड कक्षाएं) पठनीय और / के रूप में नहीं। या वास्तव में भ्रामक।
उदाहरण के लिए यह संकलक के लिए मान्य हो सकता है:
public class Object { // 1
public void foo() {
...
}
}
public class BadChosenIdentifier {
public static void main() { // 2
new BadChosenIdentifier().toString(new Object());
}
public void toString(Object java1234) { // 3, 4
String _result$ = java1234 + " -> to avoid"; // 4
System.out.println(_result$);
}
}
लेकिन हम नहीं चाहते:
Objectहमारी कक्षा को नाम देना क्योंकि यह java.lang(1) में परिभाषित है ।
- कमांड लाइन (2)
main()द्वारा उपयोग किए जाने वाले मापदंड को नहीं भरने पर एक विधि का नाम देना java।
Object.toString()विधि को ओवरलोड करने के लिए (3)।
- हमारे चरों का नामकरण
_, $या किसी भी आश्चर्यजनक / बेमिसाल चरित्र के साथ करना , जो साझा नामकरण परंपराओं (4) के खिलाफ जाता है।