2009-03-30 5 views
36

Java에서 클래스/메소드/변수 이름의 최대 길이가 있습니까? JLS는 그런 언급을하지 않습니다. 어쨌든 코드 가독성과 유지 보수성 관점에서 볼 때 매우 긴 이름이 문제가 있다는 것을 알고 있습니다.하지만 호기심 때문에 제한이 있습니다 (클래스 이름은 파일 시스템의 최대 파일 이름 제한으로 인해 제한 될 수 있습니다).최대 이름 Java에서 변수 또는 메소드의 길이

답변

18

죄송합니다. 실제로 JLS에서 답변을 찾았습니다. http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 식별자 이름의 길이는 무제한 인 것으로 보입니다.

또한 비슷한 질문을 발견 (내 초기 검색에 나타나지 않았지만, 아니면 이상한 질문 제목 입력 할 때) : 당신이 방법에 대한 VM에 의해 부과 된 크기 제한을 초과하는 경우 Maximum Method Name Length

+2

그것은 언어를위한 것이지만, 클래스 파일 형식은 더 제한적입니다. – Uri

+1

언어가 클래스 파일 용으로 컴파일되었다는 것을 고려하면 실제로 상당히 놀랍습니다 ... – Uri

+1

사실, 어리석게 긴 변수 이름을 실제로 만들려고하면 어떤 일이 발생하는지 궁금합니다 – talg

31

내가 잘못하지 않는다면, 제한은 언어 자체가 아니라 클래스 파일 형식으로되어 있기 때문에 이름을 64k로 제한합니다. 따라서 모든 실제 의도와 목적에 따라 식별자 길이는 문제가되지 않습니다.

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

클래스 이름은 파일 시스템에 대한 문제가 더있을 수 있습니다, 나는 동의 나 ': 특히이 최대 길이를 의미하는 것으로 보인다 풀에서 상수 문자열의 정의는 16 비트입니다 현재 지원되는 것이 확실하지 않습니다.

+3

이것은 받아 들여진 대답이어야합니다 – Henry

7

을 상수 풀에 대해 너무 깁니다 "... aaaaaaaaaaaaaaaaaaaa"UTF8 표현 문자열 :

Main.java:1 : 이름은 당신은 (적어도 내가 사용하고 javac의 버전과) 컴파일러 오류