2013-01-13 50 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課程。