I've defined a class like this:
public class MyClass<T implements MyInterface> {
public T getMy() {
return new T();
}
}
This won't compile. I'm not allowed to create the generic type T.
How can I solve this? Is there any good patterns to do this? Can I solve this by using an abstract class instead of the interface? Do I have to use reflection?
You can't use implements
here.
<T implements MyInterface> // can't use interface.
So you can use Abstract Class there
<T extends MyAbstractClass>
You can achieve this by passing an actual class type (e.g. to the constructor), Class<T>
and calling newInstance()
on it if default constructor is OK with you.
If you need another constructor you would need to use reflection API, e.g. via getDeclaredConstructors()
on this very class type object.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With