2009-03-30 16 views
36

जावा में कक्षा/विधि/चर नामों के लिए अधिकतम लंबाई है? जेएलएस का जिक्र नहीं लगता है। मुझे पता है कि कोड पठनीयता और रखरखाव परिप्रेक्ष्य से बहुत लंबे नाम समस्याग्रस्त हैं, लेकिन जिज्ञासा से बाहर एक सीमा है (मुझे लगता है कि कक्षा के नाम फ़ाइल फ़ाइल अधिकतम फ़ाइल नाम सीमा द्वारा सीमित हो सकते हैं)।जावा में वैरिएबल या विधि का अधिकतम नाम लंबाई

उत्तर

18

क्षमा करें, वास्तव में जेएलएस में जवाब मिला: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 ऐसा लगता है कि पहचानकर्ता नाम असीमित लंबाई के हैं।

इसके अलावा समान प्रश्न पाया (हालांकि यह मेरी प्रारंभिक खोज में प्रकट नहीं किया था, या जब मैं प्रश्न का शीर्षक जो अजीब है टाइप किया): Maximum Method Name Length

+2

होना चाहिए जो भाषा के लिए है, लेकिन वर्ग फ़ाइल प्रारूप अधिक प्रतिबंधित है। – Uri

+1

वास्तव में काफी आश्चर्य की बात है कौन, यह देखते हुए कि भाषा classfiles के लिए संकलित करने के लिए चाहिए था ... – Uri

+1

सच है, मुझे आश्चर्य है कि क्या होता है अगर आप वास्तव में एक हास्यास्पद लंबे चर नाम – talg

31

यदि मुझे गलत नहीं है, तो सीमा भाषा में ही नहीं है, लेकिन क्लासफ़ाइल प्रारूप में, जो नाम 64k तक सीमित करता है, इसलिए सभी व्यावहारिक उद्देश्यों और उद्देश्यों के लिए पहचानकर्ता लंबाई एक समस्या नहीं है। विशेष रूप से, इस पूल है, जो अधिक से अधिक लंबाई मतलब लगता है में एक निरंतर स्ट्रिंग की परिभाषा है 16 बिट:

CONSTANT_Utf8_info { 
    u1 tag; 
    u2 length; 
    u1 bytes[length]; 
} 

कक्षा नाम फाइल सिस्टम के लिए एक मुद्दे के अधिक हो सकता है, मैं मानता हूँ, मैं मुझे यकीन नहीं है कि वर्तमान में क्या समर्थित है।

+3

यह स्वीकार्य उत्तर – Henry

7

आप विधि के लिए वी एम द्वारा लगाए गए आकार की सीमा पार कर जाते हैं

Main.java:1: नाम तो आप (कम से कम मैं उपयोग कर रहा हूँ javac के संस्करण के साथ) एक संकलक त्रुटि मिलती है स्ट्रिंग के लिए UTF8 प्रतिनिधित्व "aaaaaaaaaaaaaaaaaaaa ..." निरंतर पूल के लिए बहुत लंबा है