美元符号($)在日志消息中的含义
问题描述:
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符号($)这是什么意思?我认为这是导致异常的类中的方法名或变量名,但在这种情况下它没有意义(SessionsFragment $ 4,它不能是方法或变量的名称)。 那是什么?
答
的$
是一个分离器,其指示存在一个嵌套类HashIterator
的HashMap
类的内部,并且有一个匿名内部类(第四个,它看起来像)的SessionsFragment
类的内部。
This site explains$
分隔符。
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)
嵌套类是从较高级别的嵌套类,并从顶层类通过使用美元符号($)区别开来。因此,从技术上讲,第二个嵌套类的“简单”名称是StackTrace $ FirstNested $ SecondNested。