What do I return if the return type of a method is Void? (Not void!)
So what am I supposed to return if the return type of a function has to be
Void can't be instantiated and is merely a placeholder for the
Class<T> type of
What's the point of
As noted above, it's a placeholder.
Void is what you'll get back if you, for example, use reflection to look at a method with a return type of
void. (Technically, you'll get back
Class<Void>.) It has other assorted uses along these lines, like if you want to parameterize a
Due to the use of generics in Java I ended up in having to implement this function
I'd say that something may be funky with your API if you needed to implement a method with this signature. Consider carefully whether there's a better way to do what you want (perhaps you can provide more details in a different, follow-up question?). I'm a little suspicious, since this only came up "due to the use of generics".
To make clear why the other suggestions you gave don't work:
Void.TYPE point to the same object and are of type
Class<Void>, not of
That is why you can't return those values.
new Void() would be of type
Void but that constructor doesn't exist. In fact,
Void has no public constructors and so cannot be instantiated: You can never have any object of type
Void except for the polymorphic
Hope this helps! :-)
There's no way to instantiate a Void, so the only thing you can return is null.
return null is the way to go.