在我发布的另一个问题中(我现在想出了这个问题的答案),我注意到在logcat中提到了“Landroid”。
我原来的问题: Android app starts slow, but works fine after that slow start
W/dalvikvm﹕ Link of class 'Landroid/support/v4/app/ActivityCompat21$SharedElementCallbackImpl;' failed
在SO上搜索后,我注意到其他人也在URL(URI?)的开头有一个带有L的logcats,这似乎没有意义。
Unable to resolve superclass of Lnet
W/dalvikvm(7116): Link of class 'Lnet/appcelent/commonlibrary/Lib_MailSender;' failed
WARN/dalvikvm(498): Link of class 'LShowMap/com/ShowmapActivity;' failed
所以我想知道,那封L是代表某种东西,还是在logcat创建方式的某个地方?或者它是否表明我在某处犯了错误?
另外我不明白logcat行是什么意思,所以这对我原来的问题也没有帮助。
答案 0 :(得分:9)
内部Java将类型名称表示为字符串:(我不知道为什么选择这些规则)
I
为int
,J
为long
,其他原始类型为其他单字母名称。L<classname>;
,其中<classname>
为完整的班级名称,.
替换为/
[
会获得一个数组(对于数组数组可以有多个[
) Lnet/appcelent/commonlibrary/Lib_MailSender;
表示班级net.appcelent.commonlibrary.Lib_MailSender
。这里唯一的错误是消息显示内部名称而不是“用户友好”类名。
答案 1 :(得分:2)
它来自java字节码,L是类名的前缀。
请参阅 http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.3 有关所有可能前缀的更多详细信息。