2014-09-18 122 views
0
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,它不能是方法或变量的名称)。 那是什么?

回答

2

$是一个分离器,其指示存在一个嵌套类HashIteratorHashMap类的内部,并且有一个匿名内部类(第四个,它看起来像)的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。