正确使用泛型

时间:2013-01-13 18:27:51

标签: java generics arraylist abstract-class

我目前正在使用一个抽象类,我将通过另一个名为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);
    }
}

1 个答案:

答案 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类当然。