Java编译错误:参数x超出255个字的限制

hha*_*fez 5 java compiler-errors

我有一个构造函数(用于自动生成的类),有255个参数.在linux上使用ant和javac 1.6.0_02.这个课程编写得很好,一切都很好.

但是,当我尝试使用jdk 1.6在windows xp上的eclipse中编译同一个类时,我收到以下错误

Too many parameters, parameter BLAH is exceeding the limit of 255 words eligible for method parameters
Run Code Online (Sandbox Code Playgroud)

BLAH 是第256个参数.

有办法克服这个问题吗?更改自动生成的类不是一个选项,因为我需要在每次编译时更改它或更改生成器.这两个选项都是不可接受的,因为我们已经可以在linux上获得这个类.

PS:对于那些感兴趣的人,java类是使用JacORB从IDL文件生成的.不幸的是,由于它定义了我们的软件和其他系统之间的接口,因此无法减少类中的参数数量.

Jon*_*eet 16

嗯,你打破了VM规范,第4.10节:

通过方法描述符(第4.3.3节)的定义,方法参数的数量限制为255,其中在实例或接口方法调用的情况下,限制包括一个单位.注意,方法描述符是根据方法参数长度的概念定义的,其中long或double类型的参数对长度贡献两个单位,因此这些类型的参数进一步减小了限制.

我建议你克服改变生成的代码的障碍......说实话,我很惊讶它适用于Linux.如果它生成的字节码严格无效,我就不会完全感到惊讶,而且它恰好正好适合你.

虽然尝试找到保持现有代码的方法并忽略限制总是很诱人,但我认为在这种情况下你应该把注意力转向立即减少参数的数量.