使用超类解决了代码太大的错误

时间:2014-03-17 08:05:34

标签: java

请查看以下情况: ( PS:我不是试图解决代码太大的编译器错误,因为有多种优雅的方法可以做到这一点。)

我们正在" Code too large"我们其中一个类的编译错误。该类包含public String fields标签ID和值。我们使用此类进行本地化,除了英语,所有其他语言标签都来自.properties个文件。

我们收到此错误的原因是因为我们有一个static块,其中使用反射我们将HashMap填充所有public fields及其值。字段数已经消失,我们正在越过64K方法的static限制。最可行的解决方案之一是将.properties files用于英文标签。

问题已解决,以下是建议的解决方案:
为了便于讨论,我将称之为class MyLabels。我们为名为super class的{​​{1}}定义了MyLabels。现在我们在MyLabelsExt而不是super class添加标签。通过运行一些测试,我们确认我们在MyLabels中初始化的地图包含MyLables classMyLabels中的所有字段。

问题: 为什么当我们开始使用超类时,传递了64K限制错误。

谢谢, 和Manish。

1 个答案:

答案 0 :(得分:1)

说实话,这似乎是一个可怕的解决方案。你使用一个哈希映射来保存对字段(?)的引用听起来也很有问题。

IMO您应该将消息ID和消息之间的映射保存为普通值。例如,像这样:

Map<String, Map<String, String>> lang_id_message;

String text = message.get("en").get("please.pay.the.developer");

此类地图可以从文件填充,如属性文件,您不会达到此类平台限制。消息的定义也将更易于管理;例如,如果它们位于属性文件中,则很容易为它们分配错误代码,但当它们位于Java源文件中时非常烦人。