Каково максимальное количество параметров, которые может иметь метод в Java и почему?
Я использую Java 1.8 в 64-разрядной системе Windows.
Все ответы на StackOverflow об этом говорят, что технический предел - 255 параметров без указания причины.
Чтобы быть точным, 255 для статического и 254 для нестатического (this
будет 255-м в этом случае) методов.
Я думал, что это может быть описано в какой-то спецификации и что существует просто статически определенное максимальное количество разрешенных параметров.
Но это было справедливо только для int
и всех 4-байтных типов.
Я провел несколько тестов с параметрами long
, и в этом случае я смог объявить 127 параметров.
С параметрами String
допустимое число I, выведенное из теста, равно 255 (может быть, потому, что размер ссылки составляет 4 байта в Java?).
Но поскольку я использую 64-битную систему, размер ссылок должен быть 8 байтов в ширину, поэтому с параметрами String
максимальное допустимое число должно быть 127, похожее на типы long
.
Как этот предел точно применяется?
Ограничение имеет какое-либо отношение к размеру стека метода?
Примечание. Я не собираюсь использовать эти многие параметры в любом методе, но этот вопрос должен только прояснить точное поведение.