Say I have a generic interface:
interface SomeInterface<T> {
...
}
and two implementations:
a specific one:
class SpecificImplementation<T extends SpecificClass> implements SomeInterface<T> {
...
}
and another catch all one:
class CatchAllImplementation<T> implements SomeInterface<T> {
....
}
And I want to have a generic method similar to the following:
public <T> SomeInterface<T> getImplementation(Class<T> clazz) {
if(SpecificClass.class.isAssignableFrom(clazz))
{
// do some specific stuff
return new SpecificImplementation<T>(); // bound mismatch error here
}
else
{
// do other stuff
return new CatchAllImplementation<T>();
}
}
Is there any way of mitigating against the bound mismatch error? Some kind of trick to force the compiler to ignore it or similar?
I don't HAVE to bound the type parameter on the specific implementation but I would rather do so.
Aucun commentaire:
Enregistrer un commentaire