abstract class Message <T> {
abstract <T> void setContent(T content) ;
}
class TextMessage extends Message<String> {
void setContent(String content) {
}
}
public class Main
{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
I am getting errors like
Main.java:12: error: TextMessage is not abstract and does not override abstract method setContent(T) in Message class TextMessage extends Message { ^ where T is a type-variable: T extends Object declared in method setContent(T) 1 error
Your method declaration:
abstract <T> void setContent(T content) ;
hides the type parameter declared in class. That causes the error, most probably you don't need that additional type parameter on the method.