2013-01-13 51 views
0

我目前正在使用一个抽象类,对此我贯穿了另一类称为人民使用泛型正确

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); 
    } 
} 
+4

什么错误?你可以请你发布你的错误? – subodh

+0

您应该将该方法的返回类型从'T'更改为'void'。 – berry120

+2

我建议你使用标准的大写规则,例如“人”而不是“人”。奇怪的大写字母混淆了人们和语法突出显示。 – gd1

回答

6

我猜的错误是在这条线:

return System.out.println(Person); 

println回报void,并且您的DisplayName方法需要返回T。如果该方法仅用于打印System.out顾名思义,只需将其更改为返回void即可。

备注:请确保在您的问题中提供更多信息以获得更好的质量帮助并避免降低成本。对于编译错误,请始终包含错误消息和发生的确切行。

编辑:作为一个侧面说明,只是基于类的名字,好像你应该使用有限制类型参数为您People类:

public class People<T extends Person> extends MediaContainer<T> { ... } 

甚至解析类型参数:

public class People extends MediaContainer<Person> { ... } 

这将使People的方法,其包含的对象为Person实例进行交互,调用Person方法s等。这是假定有相应的Person课程。