gpt4 book ai didi

java - 是否有一种自动方法可以使用超长(>64kb 编译)方法转换 Java 代码?

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:38 28 4
gpt4 key购买 nike

据我了解,JVM 对每个方法的编译代码的限制为 64KB。我有一个工具可以生成要运行的Java代码,有时生成的代码包含比这更长的方法。

是否存在一种自动方法将具有过长方法的 Java 类文件转换为产生相同结果但可以编译的文件?

在一个简单的例子中,代码如下:

public void longMethod
{
doSomething1();
doSomething2();
/* snip */
doSomething20000();
}

可能会转化为:

public void longMethod
{
longMethod_part1();
longMethod_part2();
/* snip */
longMethod_part10();
}

public void longMethod_part1()
{
doSomething1();
/* snip */
doSomething1000();
}

/* snip */

public void longMethod_part10()
{
doSomething9001();
/* snip */
doSomething10000();
}

但是,也存在一些并发症,例如长方法可能是一个非常长的 if/else if 链。即使一般情况太困难,尽力而为的工具也会引起人们的兴趣。

编辑:一些善良且善意的人建议修复生成这些长方法的工具。虽然这是一个很好的想法,但我无法利用它。对于我上面提出的一般问题,我仍然欢迎任何想法。

最佳答案

例如,Eclipse 中存在安全工具,但它们是供开发人员使用的。我想到了重构“提取方法”,它具有很好的属性:

  • 自动修复调用代码
  • 保证正确

我想这不符合您的需求,您想要没有人类行为的东西,不是吗?

也许有些工具是基于该功能构建的?...

<小时/>

我也支持 Joachim 修复该工具的建议:-)

可以使用以下方法简化代码:

  • 对于常见的调用序列,定义它们(甚至手动),并让工具识别它们;它会简单地调用它们,并且结果会短得多。
  • 更改数据序列的代码序列:不要组合方法调用,而是使用一个读取数据的代码循环,并对每个数据执行正确的工作。要点是数据可以来自任何结构(文件、流、数据库),不一定是代码。
<小时/>

我也喜欢史蒂夫的评论。也许,如果你无法修复代码,也无法修复工具,那么你就必须修复作者

也许可以以不同的方式使用该工具,这使得它的结果不会那么糟糕......

关于java - 是否有一种自动方法可以使用超长(>64kb 编译)方法转换 Java 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1498647/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com