This question already has answers here:
Is List<Dog> a subclass of List<Animal>? Why are Java generics not implicitly polymorphic?

(17个答案)


6年前关闭。





这些是我的类定义:

public interface Entity ...
public abstract class EntityBaseClass implements Entity  ...
public class ArticleCategory extends EntityBaseClass ...




public interface GenericService<T extends Entity>
public interface ArticleCategoryService extends GenericService<ArticleCategory>
public class ArticleCategoryServiceImpl implements ArticleCategoryService


我为什么不能做这样的事情:

GenericService<Entity> x = new ArticleCategoryServiceImpl();


最佳答案

因为ArticleCategoryServiceImpl实现的ArticleCategoryService扩展了GenericService<ArticleCategory>GenericService<Entity>不同的GenericService<ArticleCategory>

您应该查看实例化的对象的多态性,而不是它使用的泛型。

您可以将x声明为ArticleCategory>。这可能会更好,因为Entity可以同时执行和某些功能。

09-28 10:01