1
2
这可能会有点棘手。我的知识还不完整,但您至少需要注意三种指令(newarray、anewarray和multianewarray)。查看之前的说明(或在多网络Warray的情况下, n 前面的指令)获取大小,即使它是常量,也可能加载bipush、sipush或ldc(还有其他内容吗?)取决于大小。正如您所指出的,如果类是计算的结果,那么您可能会无限期地跟踪指令。 如果我没记错的话,findbugs在内部使用BCEL,但我从来没有深入研究过它们到底有多聪明。如果这些团队中的任何一个都有合适的邮件列表,他们可能会被证明是一个更好的提问地点——他们可能至少会知道是否有人曾经走过这条路。 |
2
5
好吧,如果它们是基于一个常量分配的,那么您可以检查在分配之前推送的常量。例如:
给出字节码:
|