2009-06-24 12 views

उत्तर

41

Java Language Specification बताता है कि पहचानकर्ता लंबाई में असीमित हैं।

हालांकि अभ्यास में, फाइल सिस्टम परिणामी फ़ाइल नाम की लंबाई को सीमित कर देगा।

+4

जावा वीएम विशिष्टता बताती है कि कोई भी निरंतर स्ट्रिंग 65535 बाइट तक सीमित है: http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#88659 –

+1

यह है दूसरा संस्करण (जॉन के जवाब के समान)। तीसरे संस्करण में ऐसा कोई संदर्भ नहीं है। –

+0

यह जावा एसई 8 संस्करण में है। – EJP

0

नहीं जावा कक्षा के नाम पर कोई सीमा लागू नहीं करता है। लेकिन अगर आप अन्य प्रणालियों (जैसे जेएनआई) के साथ इंटरफेसिंग करते हैं तो सुरक्षित पक्ष पर होना बेहतर होता है।

+0

इसे ** अपरिभाषित व्यवहार ** कहा जाता है, और किसी भी चश्मा का बुरा हिस्सा)) – gavenkoa

27

65535 वर्ण मुझे विश्वास है। जावा आभासी मशीन विनिर्देश से:

क्षेत्र और विधि के नाम की लंबाई, क्षेत्र और विधि वर्णनकर्ता, और अन्य निरंतर स्ट्रिंग मान 16-बिट अहस्ताक्षरित लंबाई आइटम द्वारा सीमित 65535 करने के लिए वर्ण है CONSTANT_Utf8_info संरचना (§4.4.7) का। ध्यान दें कि सीमा एन्कोडिंग में बाइट्स की संख्या पर है और पर एन्कोड किए गए वर्णों की संख्या पर नहीं है। यूटीएफ -8 दो या तीन बाइट्स का उपयोग करके कुछ अक्षरों को एन्कोड करता है। इस प्रकार, स्ट्रिंग्स मल्टीबाइट वर्णों को शामिल करते हुए आगे बाधित हैं।

यहाँ

:

http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#88659

+0

क्या आपके पास तीसरे संस्करण के लिए ऐसा कोई संदर्भ है? मैं एक खोजने में असमर्थ हूं। –

+10

65535 जेवीएम की एक सीमा है भाषा नहीं – jitter

+0

सच है यह JVM की एक विशिष्ट सीमा है ... – Jon

3
JDK 1.5, 255 के साथ Windows XP पर वर्ग नाम के लिए व्यावहारिक सीमा के साथ

- अब नाम फाइल सिस्टम में त्रुटियाँ दे दी है। यह पूरा नाम था (निर्देशिका + पैकेज + वर्ग)।

मैंने विस्टा या विंडोज 7 पर जेडीके 1.6 की कोशिश नहीं की है, उम्मीद है कि सूर्य ने इसे 8000 या उससे अधिक एनटीएफएस सीमा के रूप में तय किया है।

+0

किसी को भी जेडीके 1,6+ का जवाब पता है? – ycomp

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