如何反汇编Scala代码?可以在没有首先构建Jar并对生成的.class
文件进行反编译的情况下完成吗?有没有其他更快的方法来做到这一点?
对于Python,dis
可以按如下方式使用:
def myfunc(alist):
return len(alist)
>>> dis.dis(myfunc)
2 0 LOAD_GLOBAL 0 (len)
3 LOAD_FAST 0 (alist)
6 CALL_FUNCTION 1
9 RETURN_VALUE
答案 0 :(得分:5)
你知道你可以在REPL中做到这一点:
scala> def foo[A](xs: Seq[A]) = xs.size
foo: [A](xs: Seq[A])Int
scala> :javap foo
Size 714 bytes
...
public <A extends java/lang/Object> int foo(scala.collection.Seq<A>);
flags: ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
0: aload_1
1: invokeinterface #20, 1 // InterfaceMethod scala/collection/Seq.size:()I
6: ireturn
...
您在输出中抓取了一些内容,因为它包含外部模块和更多信息。