Java 正确使用泛型

Java 正确使用泛型,java,generics,arraylist,abstract-class,Java,Generics,Arraylist,Abstract Class,我目前使用的是一个抽象类,通过另一个名为People的类进行扩展 public abstract class MediaContainer<T> { abstract T DisplayName(T dispname); } 公共抽象类MediaContainer{ 抽象T显示名(T dispname); } 但是当我试图在第二秒内覆盖它时,我得到了一个错误 public class People<T> extends MediaContainer<T&

我目前使用的是一个抽象类,通过另一个名为People的类进行扩展

public abstract class MediaContainer<T> {
    abstract T DisplayName(T dispname);
}
公共抽象类MediaContainer{
抽象T显示名(T dispname);
}
但是当我试图在第二秒内覆盖它时,我得到了一个错误

public class People<T> extends MediaContainer<T> {
    @Override public T DisplayName(T person){
        return System.out.println(person);
    }
}
公共类人员扩展MediaContainer{
@覆盖公共T显示名(T个人){
返回系统.out.println(人);
}
}

我猜错误在这行:

return System.out.println(Person);
println
返回
void
,您的
DisplayName
方法需要返回
T
。如果该方法仅用于打印到
System.out
(顾名思义),只需将其更改为返回
void

注意:请确保在您的问题中提供更多信息,以获得更高质量的帮助并避免否决票。对于编译错误,请始终包含错误消息及其发生的确切行

EDIT:作为旁注,仅根据类的名称,您似乎应该为
人员
类使用有界类型参数:

public class People<T extends Person> extends MediaContainer<T> { ... }
公共类人员扩展MediaContainer{…}
或者甚至解析类型参数:

public class People extends MediaContainer<Person> { ... }
公共类人员扩展MediaContainer{…}

这将允许
People
的方法与其包含的对象交互,如
Person
实例、调用
Person
方法等。这当然是假设有一个相应的
Person
类。

我猜错误在这一行:

return System.out.println(Person);
println
返回
void
,您的
DisplayName
方法需要返回
T
。如果该方法仅用于打印到
System.out
(顾名思义),只需将其更改为返回
void

注意:请确保在您的问题中提供更多信息,以获得更高质量的帮助并避免否决票。对于编译错误,请始终包含错误消息及其发生的确切行

EDIT:作为旁注,仅根据类的名称,您似乎应该为
人员
类使用有界类型参数:

public class People<T extends Person> extends MediaContainer<T> { ... }
公共类人员扩展MediaContainer{…}
或者甚至解析类型参数:

public class People extends MediaContainer<Person> { ... }
公共类人员扩展MediaContainer{…}

这将允许
People
的方法与其包含的对象交互,如
Person
实例、调用
Person
方法等。这当然是假设存在相应的
Person
类。

什么错误?您可以发布您的错误吗?您可能应该将该方法的返回类型从
T
更改为
void
。我建议您使用标准的大写规则,例如“person”而不是“person”。奇怪的大写让人困惑,语法也更亮了。什么错误?您可以发布您的错误吗?您可能应该将该方法的返回类型从
T
更改为
void
。我建议您使用标准的大写规则,例如“person”而不是“person”。奇怪的大写字母让人困惑,语法也更亮了。