2014-09-18 125 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。