Search code examples
javaandroidlogcatdalvik

What does the 'L' letter mean at the beginning of some logcat urls/uri's? Is it a bug?


In a different question I posted (I figured out the answer to that question by now), I noticed a mention of 'Landroid' in the logcat.

My original question: Android app starts slow, but works fine after that slow start

W/dalvikvm﹕ Link of class 'Landroid/support/v4/app/ActivityCompat21$SharedElementCallbackImpl;' failed

After searching on SO I noticed other people also have logcats with an L at the start of a URL (URI?) that doesn't seem to make sense.

Unable to resolve superclass of Lnet

W/dalvikvm(7116): Link of class 'Lnet/appcelent/commonlibrary/Lib_MailSender;' failed

android google maps issue

WARN/dalvikvm(498): Link of class 'LShowMap/com/ShowmapActivity;' failed

So I wonder, does that letter L stand for something, or is that a typo somewhere in how the logcat is created? Or is it indicative of a mistake I made myself somewhere?

Also I don't understand what the logcat line means, so that didn't help with my original question either.


Solution

  • Internally Java represents type names as strings: (I don't know why these rules were chosen)

    • I is int, J is long, other primitive types have other single-letter names.
    • Object types are L<classname>; where <classname> is the full class name with . replaced by /
    • Sticking [ at the front gets you an array of that thing (can have multiple [s for an array of arrays)

    Lnet/appcelent/commonlibrary/Lib_MailSender; means the class net.appcelent.commonlibrary.Lib_MailSender. The only bug here is that the message shows the internal name instead of the "user-friendly" class name.