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

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) 

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

$是一个分隔符,表示HashMap类中有一个嵌套类HashIterator ,并且在SessionsFragment类中有一个匿名内部类(第四个,它看起来像)。

该网站解释了$ separator。

 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:  Native method?: false toString(): boo.hoo.StackTrace$FirstNested$SecondNested.(StackTrace.java:267) 

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