在smali代码中,“L”、“[”和“;”分别代表什么意思?

4

我试图深入了解Smali语言。我在网上找到一篇关于操作码的文章,但它从未讨论过这些特殊符号,即L;[,例如:

invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

那么,这里的符号是什么意思呢?例如[Ljava/lang/Object;Ljava/lang/String;

@sᴜʀᴇsʜᴀᴛᴛᴀ 酷字体 - daisy
我发现很难找到我所提出的重复问题。因为之前的帖子是关于Java的,而我是关于正则表达式的。 - daisy
这种dex类型的格式在http://s.android.com/tech/dalvik/dex-format.html文档中定义。 - JesusFreke
1个回答

8

[Ljava.lang.Object;是从Object#String返回的字符串,用于Object数组类,同样适用于String

[表示数组

L表示类或接口

;是类型的结尾

Class#getName

Element Type         Encoding
boolean              Z
byte                 B
char                 C
class or interface   Lclassname;
double               D
float                F
int                  I
long                 J
short                S

谢谢Reimeus,那么两个连续的对象是什么意思?例如format(Ljava/lang/String;[Ljava/lang/Object;) - daisy
这意味着你有2个数组。 - Reimeus
哦,我明白了,传入参数的两个对象之间没有分隔符。 - daisy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接