我正在尝试构建并填充一个微调器。我有一个问题填充它,它给我错误“静态初始化程序的代码超过65535字节限制”。我需要把所有物品放在旋转器内。我的微调器以这种方式设置:
public class Names
{
public static final String ALL_NAMES = "All names";
public static final String NAMES = "NAMES";
public static final String OBJECT = "OBJECT";
private String names;
private String object;
public Names(String names, String object){
super();
this.names = names;
this.object = object;
}
public String getNames() { return names; }
public String getObject() { return object; }
public static final Names[] DB = new Names[]{
new Names("Albert","Person"),
new Names("Bobby","Animal"),...
其中第二个引号中的名称是我可以从我的微调器中选择的,而第一个引号中的名称是我选择的结果。我想做一个像ExpandableList这样的东西,我插入一个“父字符串”,然后是那种“父字符串”的所有项目。这是一个例子:
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
private String[] groups = { "Persons", "Dogs", "Cats" };
private String[][] children = {
{ "Albert", "Robert", "Paul" },
{ "Yuri", "Rocky" },
{ "Lisa" },
};
使用自定义微调器可以吗?我希望你理解我的意思和写作。谢谢你的帮助。
答案 0 :(得分:1)
我认为这是失败的,因为你在静态初始化器中使用了超过65535个字节,或者更具体地说是使用Java源文件来输入..
public static final Names[] DB = new Names[]{
new Names("Albert","Person"),
new Names("Bobby","Animal"),...
将使您在编译器/语言规范中遇到限制 - 即来自JVM规范
“每个非本机非抽象方法的代码量限制为65536 字节数由代码的exception_table中的索引的大小 属性(§4.7.3),在LineNumberTable属性(§4.7.8)和 LocalVariableTable属性(§4.7.9)。 “
如果您将数据存储在数据库或文件中(这实际上应该是您如何执行此操作,在Java源文件中执行它真的很笨重),这可能会非常有效 - 请注意,即使您的代码少于那么多字节,您也可以遇到65536字节限制,因为它是您在内部存储它的方式。
如果您将代码更改为:
,则可以验证是否属于这种情况 public static final Names[] DB = new Names[]{
new Names("Albert","Person"),
new Names("Bobby","Animal")};
然后运行它(删除了其余部分)。