日志消息中美元符号 ($) 的含义

M'h*_*med 3 java eclipse debugging syntax android

    java.util.ConcurrentModificationException: null
    java.util.HashMap$HashIterator(HashMap.java:806)

    com.cimba.gsr.fragments.SessionsFragment(SessionsFragment.java:233)

    com.cimba.gsr.fragments.SessionsFragment$4(SessionsFragment.java:201)
Run Code Online (Sandbox Code Playgroud)

有时在类名后的日志输出中,消息中有一个 Dollor 符号 ($),这是什么意思?我认为是类中的方法名称或变量名称导致了异常,但在这种情况下它没有意义(SessionsFragment$4 不能是方法或变量的名称)。那是什么?

rge*_*man 6

$是分离器,其指示有一个嵌套类HashIterator的内部HashMap的类,并且有一个匿名内部类(第四个,它看起来像)的内部SessionsFragment的类。

该站点解释$分隔符。

Filename: StackTrace.java

Line number: 267
Package name: boo.hoo
Full class name: boo.hoo.StackTrace$FirstNested$SecondNested
Simple class name: StackTrace$FirstNested$SecondNested
Unmunged class name: StackTrace.FirstNested.SecondNested
Direct class name: SecondNested
Method name: <init>
Native method?: false
toString():
boo.hoo.StackTrace$FirstNested$SecondNested.<init>(StackTrace.java:267)
Run Code Online (Sandbox Code Playgroud)

嵌套类通过使用美元符号字符 ($) 与更高级别的嵌套类和顶级类区分开来。因此,从技术上讲,第二个嵌套类的“简单”名称是 StackTrace$FirstNested$SecondNested。