Java reflection: How can I retrieve anonymous inner classes?

泄露秘密 提交于 2019-11-26 14:53:14

问题


I have an anonymous inner class inside another class (SomeClass).

Both SomeClass.class.getClasses() and SomeClass.class.getDeclaredClasses() return empty arrays.

I couldn't find some hints on this in Class' Javadocs.

Can anonymous inner classes be retrieved using reflection in some way?

What else are notable differences between anonymous inner classes and normal inner classes?


回答1:


If it's using reflection, it's probably a really bad idea. Leaving that aside, I believe you can additional inner classes at runtime, so it doesn't make sense to list classes that may not have been thought of yet. Listing currently loaded classes would, I guess, require going through Java agents or similar.

Anonymous inner classes have made up names, an enclosing method and additional synthetic fields for copying external local variables that have been copied. One class is pretty much the same as another at runtime. Remember that 1.1 introduced inner classes, but class files have barely changed since 1.0.




回答2:


You could try a brute force search of Class$1 ... Class$n until you can't find any more.



来源:https://stackoverflow.com/questions/1654889/java-reflection-how-can-i-retrieve-anonymous-inner-classes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!