This question already has answers here:
Is List<Dog> a subclass of List<Animal>? Why are Java generics not implicitly polymorphic?
(17个答案)
6年前关闭。
这些是我的类定义:
和
我为什么不能做这样的事情:
?
(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