It’s been about 6 years since I’ve written Java, so please excuse the rust.
I’m working with a library method that requires that I pass it Class objects. Since I’ll have to invoke this method a dynamic number of times, each time with a slightly different Class argument, I wanted to pass it an anonymous class.
However, all the documentation/tutorials I’ve been able to find so far only talk about instantiating anonymous classes, e.g.:
new className(optional argument list){classBody}
new interfaceName(){classBody}
Can I define an anonymous class without instantiating it? Or, perhaps more clearly, can I create a Class object for an anonymous class?
Unfortunately, there’s no way you can dodge the instantiation here. You can make it a no-op, however:
Of course, this might not be an option if you have to derive from some class that performs some actions in constructor.
EDIT
Your question also says that you want to call
foo"each time with a slightly different Class argument". The above won’t do it, because there will still be a single anonymous inner class definition, even if you put the new-expression in a loop. So it’s not really going to buy you anything compared to named class definition. In particular, if you’re trying to do it to capture values of some local variables, the new instance of your anonymous class thatfoowill create using theClassobject passed to it will not have them captured.