0

这些是我的类定义:

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(); 

?

4

2 回答 2

1

因为ArticleCategoryServiceImpl实现ArticleCategoryServicewhich extends GenericService<ArticleCategory>which 与GenericService<Entity>.

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

你可以声明 xGenericService<ArticleCategory>好像。这可能会更好,因为ArticleCategory>可以做很多事情Entity,然后做一些事情。

于 2014-04-24T18:48:46.363 回答
0

像这样考虑它,如果你有一个GenericService<Entity>,那么你会有一个像这样的方法:add(Entity entity)你可以传入任何实体,即使不是一个ArticleCategory,在实现中处理时会导致异常ArticleCategoryServiceImpl。(记住这个实现需要一个ArticleCategory作为add方法的参数)

ArticleCategory是一个Entity,但GenericService<ArticleCategory>不是一个GenericService<Entity>

于 2014-04-24T19:33:29.503 回答