Méthode abstraite et concrète avec même signature en classe générique

Dans la section 8.4.8.1 de JLS 8, il y a une déclaration:

Une méthode concrète dans une superclasse générique C peut, sous certaines paramésortingsations, avoir la même signature qu’une méthode abstraite dans cette classe. Dans ce cas, la méthode concrète est héritée et la méthode abstraite ne l’est pas. La méthode héritée doit alors être considérée comme remplaçant son homologue abstrait de C.

Quelqu’un pourrait-il donner un exemple d’une telle paramésortingsation pour une classe générique? Je n’étais pas capable de.

Peut être

public abstract class A { public abstract void m(T t); public void m(Ssortingng s) {} } public class B extends A { } 

Dans ce cas, les deux méthodes de B seront void m(Ssortingng) .

La réponse ci-dessus est correcte donnée par @Roman, je veux append une dernière chose à cette réponse. Si nous modifions le paramètre de la méthode m () de Ssortingng to Object , il se produira une erreur de compilation, car Generics fonctionne avec l’effacement du type. Ainsi, après l’effacement du type, m(T t) -> will be to m(Object t) Ceci est une erreur de compilation car nous ne pouvons pas avoir deux méthodes avec le même nom et la même signature. Voir ci-dessous l’erreur de compilation –

 public abstract class A { public abstract void m(T t); // compilation error: m(T) and m(Object), both method have same erasure public void m(Object s) {} } public class B extends A { @Override public void m(Object o) { } }