java - 使用泛型层次结构在 Java 中进行转换

标签 java generics inheritance nested-generics

这些是我的类定义:

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> 不同.

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

您可以将 x 声明为 GenericService<ArticleCategory>尽管。哪个可能更好,因为 ArticleCategory>可以做 Entity 一样多的事情然后是一些。

关于java - 使用泛型层次结构在 Java 中进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23277269/

相关文章:

Java 泛型 "upcast"到非参数化类型

python - 如何从Python中的单个类继承一个类的多个实例

java - 我如何才能从任何类访问这个数组?

java - evictAll 和刷新之间的区别

java - 如何实例化一个HashMap<K, V>?

java - Groovy:将标准输出重定向到文件不起作用

java - 多个通用类型

java - 使用虚拟方法调用基类(Java 中)

java - 在 Eclipse 中,是否可以在不更改源文件夹的情况下更改默认包?

java - 如何在 Java 中将 CSV 文件数据存储到数组中?