我目前正在使用一个抽象类,我将通过另一个名为People
的类进行扩展public abstract class MediaContainer<T> {
abstract T DisplayName(T dispname);
}
但是当我试图在第二次覆盖它时我得到一个错误
public class People<T> extends MediaContainer<T> {
@Override public T DisplayName(T person){
return System.out.println(person);
}
}
答案 0 :(得分:6)
我猜错误就在这一行:
return System.out.println(Person);
println
返回void
,您的DisplayName
方法需要返回T
。如果该方法仅用于打印到System.out
,顾名思义,只需将其更改为返回void
。
注意:请务必在您的问题中提供更多信息,以获得更高质量的帮助并避免使用downvotes。对于编译错误,请始终包含错误消息和正在发生的确切行。
编辑:作为旁注,仅基于类的名称,您似乎应该为People
类使用有界类型参数:
public class People<T extends Person> extends MediaContainer<T> { ... }
甚至可以解析类型参数:
public class People extends MediaContainer<Person> { ... }
这将允许People
的方法与其包含的对象作为Person
实例进行交互,调用Person
方法等。这假设有一个相应的Person
类当然。