2009-03-30 40 views
36

Có độ dài tối đa cho tên lớp/phương thức/biến trong Java không? JLS dường như không đề cập đến điều đó. Tôi biết rất dài tên là vấn đề dù sao từ mã khả năng đọc và khả năng bảo trì, nhưng chỉ tò mò là có một giới hạn (tôi đoán tên lớp có thể bị giới hạn bởi hệ thống tập tin tối đa tên tập tin giới hạn).Độ dài tên tối đa của biến hoặc phương pháp trong Java

Trả lời

18

Xin lỗi, thực sự tìm thấy câu trả lời trong JLS: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 Dường như tên nhận dạng có độ dài không giới hạn.

Cũng tìm thấy câu hỏi tương tự (mặc dù nó không xuất hiện trong tìm kiếm ban đầu của tôi, hoặc khi tôi gõ tiêu đề câu hỏi đó là lạ): Maximum Method Name Length

+2

Đó là ngôn ngữ, nhưng định dạng tệp lớp là hạn chế hơn. – Uri

+1

Điều thực sự khá ngạc nhiên khi xem xét ngôn ngữ được biên soạn cho các lớp học ... – Uri

+1

đúng, tôi tự hỏi điều gì sẽ xảy ra nếu bạn thực sự cố tạo một tên biến dài vô cùng – talg

31

Nếu tôi không nhầm, giới hạn không nằm trong ngôn ngữ mà ở định dạng lớp, giới hạn tên thành 64k, vì vậy với tất cả ý nghĩa thực tế và độ dài định danh mục đích không phải là vấn đề. Cụ thể, đây là định nghĩa của một chuỗi liên tục trong hồ bơi, trong đó dường như ngụ ý độ dài tối đa là 16 bit:

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

tên lớp có thể có nhiều của một vấn đề cho các hệ thống tập tin, tôi đồng ý, tôi m không chắc chắn những gì hiện đang được hỗ trợ.

+3

Đây phải là câu trả lời được chấp nhận – Henry

7

Nếu bạn đi vượt quá giới hạn kích thước áp đặt bởi VM cho phương pháp tên sau đó bạn nhận được một lỗi biên dịch (ít nhất là với phiên bản javac tôi đang sử dụng):

Main.java:1: đại diện UTF8 cho chuỗi "aaaaaaaaaaaaaaaaaaaa ..." là quá dài đối với các hồ bơi liên tục

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