【发布时间】:2011-11-30 08:36:08
【问题描述】:
显然 javac 中初始化字符串的大小是有限制的。谁能帮我确定最大限制是多少?
谢谢
编辑:
我们正在构建一个类似于“{1,2,3,4,5,6,7,8......}”的初始化字符串,但最好有 10,000 个数字。当我们为 1000 执行此操作时,它可以工作,10,000 会抛出一个错误,指出代码对于 try 语句来说太大。
为了产生这个,我们使用了一个字符串生成器并循环遍历一个附加值的数组。显然这是javac的一个限制。我们被告知,如果我们以小块的形式传递它,我们可以在我们正在调用的方法中重建数组。然而这是不可能的,因为我们无法控制我们正在调用的用户方法。
我想发布代码但不能,因为这是大学的项目。我不是在寻找代码解决方案,只是帮助理解这里的实际问题。
它的for循环是罪犯
Object o = new Object()
{
public String toString()
{
StringBuilder s = new StringBuilder();
int length = MainInterfaceProcessor.this.valuesFromData.length;
Object[] arrayToProcess = MainInterfaceProcessor.this.valuesFromData;
if(length == 0)
{
//throw exception to do
}
else if(length == 1)
{
s.append("{" + Integer.toString((Integer)arrayToProcess[0])+"}");
}
else
{
s.append("{" + Integer.toString((Integer)arrayToProcess[0])+","); //opening statement
for(int i = 1; i < length; i++)
{
if(i == (length - 1))
{
//last element in the array so dont add comma at the end
s.append(getArrayItemAsString(arrayToProcess, i)+"}");
break;
}
//append each array value at position i, followed
//by a comma to seperate the values
s.append(getArrayItemAsString(arrayToProcess, i)+ ",");
}
}
return s.toString();
}
};
try
{
Object result = method.invoke(obj, new Object[] { o });
}
【问题讨论】:
-
你到底是什么意思,命令行的长度?命令行参数?字符串的最大大小?为什么这很重要?
-
因为我正在为一个名为 bluej 的软件(基于学生的 ide)开发插件。要远程调用方法,您必须构建一个初始化字符串,然后由我尝试使用数组调用的方法对其进行解析。大型数组失败,因为初始化字符串太大。我只是想不知道如何查看限制
-
你指的是this之类的东西吗?
-
啊,你说的是数组初始化,而不是字符串?
标签: java compiler-construction javac