2014-09-18 2 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) 

Когда-то в журнале выход после имени класса в сообщении есть символ доллара ($), что это значит? Я думал, что это имя метода или имя переменной в классе вызвало исключение, но в этом случае это не имеет смысла (SessionFragment $ 4 не может быть именем метода или переменной). так что это?

ответ

2

$ является сепаратор, который указывает на то, что есть вложенный класс 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.

Смежные вопросы