Java 检查 args 是否等于 null,它会运行吗?



有一个java类并把它拿到字节码。我的问题是它会根据以下内容进入_L2吗?我不会这么认为(我读了另一篇 StackOverflow 文章,说它永远不会为空,但我现在找不到它(

其次,如果它确实转到_L1,它只是将j设置为零。但下一步是什么?它是否继续_L7?

如果它确实击中了_L2它将从那里走向何方?

public class testing
{
public static volatile void main(String args[])
{
local;
Object obj;
int i;
obj = ((String) (obj)).toCharArray();
i = 0;
if(args == null) goto _L2; else goto _L1
_L1:
int j = 0;
_L7:
if(j == -(~obj.length + 2)) goto _L4; else goto _L3
_L2:
if(args[0].length() != 32)
break MISSING_BLOCK_LABEL_484;

当您正常调用程序时,args不会为 null,但始终可以使用 null 参数手动调用main方法。

话虽如此,您发布的代码没有多大意义。从技术上讲,整个方法都是无法访问的,因为开头obj = ((String) (obj)).toCharArray();的行将无条件抛出,因为此处obj为 null。

我的猜测是它被混淆了,您使用的反编译器没有准确地反编译它。与其使用可能有缺陷的反编译器,我建议使用 Krakatau 反汇编器并发布字节码反汇编,以便我们可以看到相关类文件中的实际内容。

相关内容

最新更新