Яка максимальна кількість параметрів, який може мати метод на 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
. Що-небудь більше, ймовірно, повинно бути загорнене в об’єкт.