5

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

2 Answers 2

4

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

Sign up to request clarification or add additional context in comments.

3 Comments

Food for thought that given an anon inner class, you can find its enclosing Method, but getDeclaredInnerClasses() is not part of the Method api.
I think I can understand why there is no getDeclaredInnerClasses(). It would be impossible to implement without a change to the class file format.
Classes support meta information, which where such information could go. I don't think it is there because a good use case may not have been found. Perhaps what you are trying to do could be done another way. e.g. with Enum's??
0

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.

1 Comment

Though not a solution answer, good arguments. Will mark as correct.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.