2009-06-24 84 views

回答

41

Java Language Specification指出標識符的長度是無限的。

實際上,文件系統將限制生成文件名的長度。

+4

Java VM規範指出任何常量字符串都被限制爲65535字節:http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#88659 – 2009-11-27 22:15:41

+1

這是從第二版(與Jon的答案相同)。第三版沒有這樣的參考文獻。 – 2009-11-29 21:42:45

+0

它在Java SE8版本中。 – EJP 2014-03-21 09:14:44

0

不可以。Java不對類名施加任何限制。但是如果你與其他系統(例如JNI)進行交互,那麼最好安全一點。

27

65535個字符我相信。從Java虛擬機規範:

字段和方法的名稱的長度, 字段和方法描述符和 其他常數字符串值是 限制爲65535字符由 16位無符號長項的 CONSTANT_Utf8_info結構(§4.4.7)。 請注意,限制編碼字節數爲 ,而不是 編碼字符數。 UTF-8使用 兩個或三個字節對某些字符進行編碼。因此,併入多字節字符的字符串 進一步受到限制。

這裏:

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

3

隨着JDK 1.5,在Windows XP上使用255類名稱的實際限制 - 更長的名稱在文件系統中給了錯誤。這是全名(目錄+包+類)。

我還沒有在Vista或Windows 7上試過JDK 1.6,希望Sun將它固定爲8000左右的NTFS限制。