Яка максимальна кількість параметрів, який може мати метод на Java і чому?
Я використовую Java 1.8 в 64-бітній системі Windows.
Усі відповіді на StackOverflow про це говорять про те, що технічна межа становить 255 параметрів, не вказуючи, чому.
Якщо бути точним, 255 для статичних і 254 для нестатичних ( thisу цьому випадку буде 255-м).
Я подумав, що це можна описати в якійсь специфікації і що існує просто статично визначена максимальна кількість параметрів, дозволених.
Але це було справедливим лише для intвсіх 4-байтних типів . Я зробив кілька тестів з longпараметрами, і мені вдалося оголосити лише 127 параметрів у цьому випадку.
Для Stringпараметрів дозволене число, яке я вивів із тестування, - 255 (це може бути тому, що розмір опорного розміру в Java становить 4 байти?).
Але оскільки я використовую 64-бітну систему, розмір посилань повинен бути шириною 8 байт, тому для Stringпараметрів максимально дозволене число повинно бути 127, аналогічно longтипам.
Як саме застосовується ця межа?
Чи має обмеження щось спільне з розміром методу стека ?
Примітка: я не збираюся використовувати ці багато параметрів у будь-якому методі, але це питання лише для уточнення точної поведінки.
<= 4. Що-небудь більше, ймовірно, повинно бути загорнене в об’єкт.