I really need to instantiate a T in Foo using a parameter-less constructor
Simple answer is "you cant do that" java uses type erasure to implment generics which would prevent you from doing this.
How can one work around Java's limitation?
One way (there could be others) is to pass the object that you would pass the instance of T to the constructor of Foo<T>
. Or you could have a method setBar(T theInstanceofT);
to get your T instead of instantiating in the class it self.