Java의 메소드가 가질 수있는 최대 매개 변수 수는 얼마이며 그 이유는 무엇입니까?
64 비트 Windows 시스템에서 Java 1.8을 사용하고 있습니다.
이에 대한 StackOverflow의 모든 답변은 기술적 한계가 이유를 지정하지 않고 255 개의 매개 변수라고 말합니다.
정확히 말하면, 255는 정적 인 경우와 254는 비 정적 ( this
이 경우 255 번째) 방법입니다.
나는 이것이 일종의 사양으로 설명 될 수 있다고 생각했으며 허용 된 최대 수의 매개 변수가 정적으로 정의되어 있다고 생각했습니다.
그러나 이것은 int
모든 4 바이트 유형 에만 유효합니다 . long
매개 변수로 몇 가지 테스트 를 수행 했으며이 경우 127 개의 매개 변수 만 선언 할 수있었습니다.
String
매개 변수를 사용하면 테스트에서 추론 한 허용 숫자는 255입니다 (Java에서 참조 크기가 4 바이트이기 때문일 수 있습니다).
그러나 64 비트 시스템을 사용하고 있으므로 참조 크기는 8 바이트이어야하며 String
매개 변수의 경우 허용되는 최대 수는 long
유형 과 비슷한 127이어야합니다 .
이 한도는 어떻게 정확하게 적용됩니까?
한계가 메소드 의 스택 크기 와 관련이 있습니까?
참고 : 실제로 모든 방법에서 이러한 많은 매개 변수를 사용하지는 않지만이 질문은 정확한 동작을 명확하게하기위한 것입니다.
<= 4
. 더 많은 것은 아마도 객체로 싸야 할 것입니다.