java中的代码有最大大小吗?我写了一个有一万多行的函数。实际上,每一行都给一个数组变量赋值。
arts_bag[10792]="newyorkartworld";
arts_bag[10793]="leningradschool";
arts_bag[10794]="mailart";
arts_bag[10795]="artspan";
arts_bag[10796]="watercolor";
arts_bag[10797]="sculptures";
arts_bag[10798]="stonesculpture";
在编译时,我得到了一个错误:代码太大
我如何克服这个问题?
13条答案
按热度按时间hgb9j2n61#
如其他答案所述,方法的字节码限制为64kb(至少在sun的java编译器中是这样)
对我来说,将该方法分解成更多的方法会更有意义——每个方法都将某些相关的内容分配给数组(使用arraylist来实现这一点可能更有意义)
例如:
或者,您也可以从静态资源加载这些项,如果它们是从属性文件修复的
sg2wtvxw2#
您可以添加另一个方法来为代码创建空间,以获得额外的数据空间,您可能有一个方法占用了大量的数据空间。尝试划分你的方法,因为我有同样的问题,并通过在javaandroid代码中为相同的数据创建另一个额外的方法来修复它,在我这样做之后问题就消失了。
uqjltbpv3#
此错误有时是由于单个函数中的代码太大。。。要解决这个错误,可以将该函数拆分为多个函数,如
esyap4oy4#
一个java类中的一个方法最多可以有64kb的字节码。
但你应该把它清理干净!
使用
.properties
文件来存储此数据,并通过java.util.Properties
您可以通过放置.properties
文件,并使用:lyfkaqu15#
这看起来有点疯狂。不能通过从文本文件或其他数据源读取值来初始化数组吗?
ijnw1ujt6#
我自己也遇到过这个问题。对我来说有效的解决方案是重构并将方法缩小到更易于管理的部分。像你一样,我正在处理一个近10公里线的方法。然而,通过使用静态变量和较小的模函数,问题得到了解决。
似乎有更好的解决办法,但使用Java8,没有。。。
0wi1tuuw7#
方法上有64k字节的代码大小限制
话虽如此,我还是同意理查德的看法;你为什么需要这么大的方法?给出了op中的示例,属性文件应该足够了。。。如果需要的话,甚至是一个数据库。
xxslljrj8#
好吧,也许这个答案太迟了,但我认为这种方式比另一种方式好
例如,代码中有1000行数据
打破他们
为了获得更好的性能,请在代码中输入“if”
我希望这个代码能帮助你
apeeds0o9#
由于方法有一个大小限制,您现在不想重新设计代码,所以您可以将数组分成4-5部分,然后将它们放入不同的方法中。在读取数组时,调用一系列中的所有方法。您还可以维护一个计数器,以了解已解析了多少索引。
i7uaboj410#
试着重构你的代码。在java中,方法的大小是有限制的。
0g0grzrc11#
这是由于所有的代码在单一的方法解决方案:创建更多的一些小方法,然后这个错误将消失
n53p2ov012#
我有一个导致.java文件大小超过500kb的枚举。eclipse可以出于某种原因构建它;eclipse导出的ant build.xml不能。我正在调查这件事,并将更新这篇文章。
myzjeezk13#
根据java虚拟机规范,方法的代码不能大于65536字节:
价值
code_length
项给出了code
此方法的数组。代码长度的值必须大于零(因为代码数组不能为空)并且小于65536。
code_length
定义对象的大小code[]
包含方法的实际字节码的属性:这个
code
数组给出实现该方法的java虚拟机代码的实际字节数。