2009-06-24 44 views

Trả lời

41

Java Language Specification tuyên bố rằng số nhận dạng không giới hạn về độ dài.

Trong thực tế, hệ thống tệp sẽ giới hạn độ dài của tên tệp kết quả.

+4

Đặc tả Java VM nêu rõ rằng bất kỳ chuỗi cố định nào bị giới hạn ở 65535 byte: http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#88659 –

+1

Đây là từ ấn bản thứ hai (giống như câu trả lời của Jon). Không có tài liệu tham khảo như vậy trong ấn bản thứ ba. –

+0

Nó có trong phiên bản Java SE8. Liên kết – EJP

0

No. Java không áp đặt bất kỳ giới hạn nào đối với tên lớp. Nhưng nếu bạn giao tiếp với các hệ thống khác (ví dụ: JNI) thì tốt hơn là ở bên an toàn.

+0

Đó được gọi là ** hành vi không xác định ** và phần xấu của bất kỳ thông số kỹ thuật nào)) – gavenkoa

27

65535 ký tự Tôi tin. Từ Java Virtual Machine đặc điểm kỹ thuật:

Chiều dài của tên trường và phương pháp, lĩnh vực và phương pháp mô tả, và giá trị chuỗi liên tục khác là giới hạn 65535 ký tự bằng số 16-bit mục dài unsigned của cấu trúc CONSTANT_Utf8_info (§4.4.7). Lưu ý rằng giới hạn ở số byte trong bảng mã và không phải là số số lượng ký tự được mã hóa. UTF-8 mã hóa một số ký tự bằng cách sử dụng hai hoặc ba byte. Do đó, các chuỗi kết hợp các ký tự nhiều byte là bị hạn chế hơn nữa.

đây:

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

+0

Bạn có tham chiếu như vậy cho ấn bản thứ ba không? Tôi không thể tìm được. –

+10

65535 là giới hạn của JVM không phải là ngôn ngữ chính nó – jitter

+0

Đúng là giới hạn cụ thể của JVM ... – Jon

3

Với JDK 1.5, giới hạn thực tế cho tên lớp trên Windows XP với 255 - còn tên đã sai sót trong hệ thống tập tin. Đây là tên đầy đủ (thư mục + package + class).

Tôi chưa thử JDK 1.6 trên Vista hoặc Windows 7, hy vọng rằng Sun đã sửa nó thành giới hạn NTFS là 8000 hoặc hơn.

+0

ai biết câu trả lời cho JDK 1,6+? – ycomp

Các vấn đề liên quan