Qual é o número máximo de parâmetros que um método em Java pode ter e por quê?
Estou usando o Java 1.8 em um sistema Windows de 64 bits.
Todas as respostas no StackOverflow sobre isso dizem que o limite técnico é de 255 parâmetros sem especificar o porquê.
Para ser mais preciso, 255 para this
métodos estáticos e 254 para não estáticos ( será o 255º neste caso).
Eu pensei que isso poderia ser descrito em algum tipo de especificação e que simplesmente existe um número máximo de parâmetros estaticamente definido permitido.
Mas isso era válido apenas para int
todos os tipos de 4 bytes . Fiz alguns testes com long
parâmetros e só pude declarar 127 parâmetros nesse caso.
Com os String
parâmetros, o número permitido deduzido do teste é 255 (pode ser porque o tamanho de referência é 4 bytes em Java?).
Mas como eu estou usando um sistema de 64 bits, o tamanho das referências deve ter 8 bytes de largura e, com os String
parâmetros, o número máximo permitido deve ser 127, semelhante aos long
tipos.
Como esse limite é aplicado exatamente?
O limite tem algo a ver com o tamanho da pilha do método?
Nota: Eu realmente não vou usar esses muitos parâmetros em nenhum método, mas essa pergunta é apenas para esclarecer o comportamento exato.
<= 4
. Qualquer coisa mais provavelmente deve ser embrulhada em um objeto.