Я предполагаю, что это происходит для анонимного класса.Когда вы создаете анонимный класс, вы фактически создаете класс, который расширяет класс, имя которого вы получили.
"Более чистый" способ получить желаемое имя:
Если ваш класс являетсяанонимный внутренний класс, getSuperClass()
должен дать вам класс, из которого он был создан.Если вы создали его из интерфейса, чем вы вроде SOL, потому что лучшее, что вы можете сделать, это getInterfaces()
, который может дать вам более одного интерфейса.
"Хакерский" способ - просто получить имяс getClassName()
и используйте регулярное выражение, чтобы опустить $1
.