我正尝试在字节码中这样做:
if("asd"=="asd"){}
但我收到以下错误:
Exception in thread "main" java.lang.VerifyError: (class: Main, method: main signature: ([LJava/lang/String:)V) Expecting to find integer on stack
at java.lang.Class.getDeclareMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.class.getMethod0(Unknown Source)
at java.lang.class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
有什么想法吗?
最佳答案
IF_ICMPEQ是整数比较(这是ICMP的意思)你想用IF_ACMPEQ比较引用
顺便说一句,你不需要存储然后加载值,你可以只使用堆栈上的值。
关于java - asm 字节码中的字符串相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17068628/