Jaka jest maksymalna liczba parametrów, które może mieć metoda w Javie i dlaczego?
Używam języka Java 1.8 w 64-bitowym systemie Windows.
Wszystkie odpowiedzi na StackOverflow na ten temat mówią, że limit techniczny to 255 parametrów bez określenia dlaczego.
Dokładniej, 255 dla this
metod statycznych i 254 dla metod niestatycznych ( będzie to 255 w tym przypadku).
Pomyślałem, że można to opisać w jakiejś specyfikacji i że istnieje po prostu statycznie określona maksymalna liczba dozwolonych parametrów.
Ale dotyczyło to tylko int
i wszystkich typów 4-bajtowych . Zrobiłem kilka testów z long
parametrami i w tym przypadku byłem w stanie zadeklarować tylko 127 parametrów.
Z String
parametrami dozwolona liczba, którą wydedukowałem z testów, to 255 (może to być spowodowane tym, że rozmiar odniesienia wynosi 4 bajty w Javie?).
Ale ponieważ używam systemu 64-bitowego, rozmiar referencji powinien mieć szerokość 8 bajtów, więc przy String
parametrach maksymalna dozwolona liczba powinna wynosić 127, podobnie jak long
typy.
Jak dokładnie stosuje się ten limit?
Czy limit ma coś wspólnego z rozmiarem stosu metody?
Uwaga: tak naprawdę nie zamierzam używać tych wielu parametrów w żadnej metodzie, ale to pytanie ma na celu jedynie wyjaśnienie dokładnego zachowania.
<= 4
. Coś więcej powinno być prawdopodobnie zawinięte w przedmiot.