Quiero crear una interfaz que permite a cualquier clase de implementación de esta manera:argumento de entrada interfaz Java se extiende desde una clase base
public interface MyInterface
{
void doSomething(<A extends MyBaseClass> arg1);
}
public class MyImpl implements MyInterface
{
void doSomething (SomeClassExtendsMyBaseClass arg1)
{
// do something
// SomeClassExtendsMyBaseClass is a class that extends MyBaseClass
}
}
consigo un error de sintaxis al hacer lo anterior. ¿Puede alguien mostrarme cómo lograr este objetivo?
Gracias
+1 - Esta es la mejor solución si el tipo genérico se limita estrictamente al único método. – Jeremy
No tiene sentido hacer que el método tome un argumento de tipo 'T extiende MyBaseClass' a menos que necesite hacer algo más con' T', como devolver un objeto de tipo 'T' o restringir otro parámetro usando ese tipo . Tal como es, 'void doSomething (MyBaseClass arg1)' sería más apropiado. Además, el OP claramente quiere que las implementaciones de su interfaz puedan restringir el tipo de 'MyBaseClass' que acepta el método; los métodos genéricos permiten a _caller_ especificar el tipo. – ColinD
@Colin: "a menos que necesites hacer algo con' T' "- ¿No es eso lo que quiere el OP? – Jeremy