2012-06-08 27 views
6

मैं public static void ... String[] args हस्ताक्षर के भाग को बदल नहीं करना चाहती है, लेकिन यह इस समारोह (जैसे। सिर्फ मनोरंजन के लिए) "का नाम बदलने" के लिए संभव है?जावा में, क्या "सार्वजनिक स्थैतिक शून्य मुख्य" का नाम बदलकर बदला जा सकता है?

तो निष्पादन के लिए प्रविष्टि बिंदु दूसरे नाम के साथ एक समारोह होगा।

इसे नाम बदलें, जैसे boot (क्या बेहतर होगा, अगर ऐतिहासिक नहीं है, तो मेरे विशेष मामले में इसके लिए वास्तविक उपयोग)।


संबंधित

मैं कुछ अलग करने में रुचि है, लेकिन इन सवालों अभी भी दिलचस्प हैं:

public static void main(String arg[ ]) in java is it fixed?

Why the name main for function main()

+0

ठीक है, अगर आप JVM का कोड भी बदलते हैं तो यह संभव है। –

+0

[स्रोत] हैकिंग द्वारा संभावना को इंगित करने के लिए धन्यवाद। :) तो क्या कोई विन्यास योग्य तरीका नहीं है? – n611x007

+0

क्यों, थोड़ा उत्सुक होने के लिए एक डाउनवोट क्यों? – n611x007

उत्तर

9

संख्या Java Language Specification का कहना है:

एक जावा आभासी मशीन कुछ निर्दिष्ट वर्ग के main विधि को आविष्कार करके निष्पादन शुरू करती है, इसे एक एकल तर्क पास करता है, जो तारों की एक सरणी है।

JVM Specification एक ही बात कहते हैं:

जावा आभासी मशीन तो, प्रारंभिक कक्षा लिंक यह initializes, और जनता के वर्ग विधि void main(String[]) invokes।

1

आपका एप्लिकेशन public static void main(String[] args) से चलना शुरू हो जाता है। यह उस बिंदु की तरह है जहां JVM कार्यवाही शुरू करने के लिए देखता है। यदि आप इसे बदलते हैं, तो JVM आपके एप्लिकेशन को शुरू नहीं करने के लिए स्वतंत्र महसूस करेगा।

यदि आप अपने आवेदन के शुरुआती बिंदु के रूप में boot() रखना चाहते हैं - इसे main() पर कॉल करें।

+0

हां, 'बूट' को कॉल करना वह है जो मैं वर्तमान में करता हूं। :) मैंने हमेशा महसूस किया कि कॉलिंग (यानी नामकरण) यह 'मुख्य' वास्तव में आजकल एक बहुत ही वर्णनात्मक नाम नहीं है। – n611x007

2

नहीं। आप जावा भाषा विशिष्टता के अनुसार taht नहीं कर सकते हैं। लेकिन यदि आप चाहते हैं, क्योंकि जावा एक ओपन सोर्स प्रोजेक्ट है, तो जावा भाषा का पूरा स्रोत कोड डाउनलोड करें और तदनुसार इसे बदलें (मेरा मतलब है कि जेवीएम के स्रोत कोड को बदलें)। यह एकमात्र तरीका है जिसे आप कर सकते हैं।

तो अब आप समझ सकते हैं, मैंने क्यों कहा कि यह असंभव है।

+0

अच्छा, यह इंगित करता है कि यह खुला स्रोत है। :) – n611x007

4

सरल उत्तर संख्या, कारण, Specification ऐसा है, JVM केवल main और प्रारंभिक बिंदु के रूप में कोई भी कस्टम नाम नहीं देखेंगे। यह सटीक हस्ताक्षर public static void main(String[] args)

तार्किक रूप से मुख्य कहलाने के भी यह समझ में आता है कि कैसे JVM पता चल जाएगा कि main विधि के बजाय, यह boot या कुछ और जब तक java आदेश शुरू विधि पारित करने के लिए एक विकल्प था देखने के लिए है है ।

लेकिन यह किसी भी अच्छे कारण के लिए बहुत अधिक पूछ रहा है।

दूसरे के बाद से अपनी मानकीकृत यह डेवलपर समुदाय भी, जो कोई भी कोड पर जानते हैं कि कैसे एक दिया Java स्टैंडअलोन कार्यक्रम चलाने के लिए, या कहने के लिए है, तो आप एक परियोजना मिल गया है लग रहा है में मदद करता है, अपना पहला बिंदु हमेशा मुख्य विधि के लिए देखो हो जाएगा , और वहां से आप आगे बढ़ते हैं।

+0

यह अच्छा है कि यह मानकीकृत है, लेकिन यह एक शोस्टॉपर नहीं होना चाहिए क्योंकि यह अभी भी प्रवेश बिंदु के नाम को निर्दिष्ट करने का एक मानक तरीका हो सकता था। – n611x007

+0

ऐसा करने का एक कारण केंद्रीय कार्य के लिए बेहतर आत्म-वर्णन करने वाला नाम होगा। यद्यपि मैं यह तर्कसंगत मानता हूं कि यदि मुख्य वर्णनात्मक नहीं है, और हम इसे व्यापक रूप से व्यापक उपयोग में जोड़ते हैं। – n611x007

+0

जैसा कि आपने सही ढंग से मुख्य रूप से बताया है, स्वयं का वर्णन है कि बहुत अधिक लचीलापन इस मामले में – mprabhat

2

प्रारंभ में JVM स्ट्रिंग्स के सरणी के साथ विधि public static void main विधि से देख रहा है। तो केवल एक चीज जो आप कर सकते हैं वह तर्क है args। यदि आप चाहते हैं बूट कोई भी नहीं की तरह विधि कुछ इस तरह करने से आप बंद हो जाता है (व्यक्तिगत रूप से मुझे लगता है कि "पैटर्न" की अनुशंसा नहीं करते)

static void boot(String[] arguments){ 
    //your logic 
} 

public static void main(String[] args) { 
    boot(args); 
} 
+0

अच्छा कोड उदाहरण के बिना बहुत अधिक लाभ प्राप्त करता है। :) मैं इसे वर्तमान में इस तरह कर रहा हूँ। मैंने हमेशा महसूस किया कि नाम 'मुख्य' वास्तव में आजकल बहुत वर्णनात्मक नहीं है। एक ऐतिहासिक आर्टिफैक्ट की तरह लगता है। – n611x007

+0

मुझे 'मुख्य' विधि में उपयोग किया गया, इसलिए मेरे लिए 'बूट' केवल एक अनावश्यक विधि कॉल है। लेकिन हर इंसान मुक्त है इसलिए आपको नहीं रोकेगा :) – Pshemo

1

सरल जवाब NO है। जब आप प्रोग्राम निष्पादित करना प्रारंभ करते हैं तो यह public static void main(String[] args) लगता है जो स्ट्रिंग सरणी तर्क लेता है। इस प्रविष्टि बिंदु से मुख्य धागा प्रारंभ करें।

+0

किसी और ने अभी तक उल्लेख नहीं किया है कि यह एक धागा है! : ओ – n611x007