我正在64位Windows系统上使用Java 1.8。
StackOverflow上所有的答案都说技术限制是255个参数,但没有说明为什么。
确切地说,对于静态方法,限制是255个,而对于非静态方法,限制是254个(在这种情况下,
this
将成为第255个)。我认为这可能可以在某种规范中描述,并且只有预定义的最大参数数量。但是,这仅对于int和所有4字节类型有效。
我做了一些带有long参数的测试,在那种情况下,我只能声明127个参数。
通过使用String参数,我从测试推断出允许的最大数量为255(可能是因为Java中的引用大小为4字节?)。
但是,由于我使用的是64位系统,所以引用大小应该是8字节宽的,因此在具有String参数的情况下,最大允许数量应该与long类型类似为127。
这个限制如何精确应用?这个限制与方法的堆栈大小有关吗?
注意:我真的不会在任何方法中使用这么多参数,但这个问题只是为了澄清确切的行为。
<= 4
。任何更多的内容都应该打包成一个对象。 - Vivin Paliath