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 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.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments