检查泛型类的类型

时间:2013-10-10 14:02:48

标签: java generics

我有一个界面:

public interface IValidator<E extends IEntity>
{
    void validate(final E entity);
}

我想创建一个ValidatorService类,如下所示:

public class ValidatorService
{
    private List<IValidator<IEntity>> validators;


    public void validate(IEntity e)
    {
        for(IValidator<IEntity> validator : this.validators)
        {
            //if( instanceof )???
            validator.validate(e);
        }
    }
}

如何确保验证器仅应用于相应的类(请参阅代码中的&#39; ????)?即:如果我们有EntityA类型的实体,那么只会调用验证器IValidator?我想我缺乏一些仿制药的知识..谢谢

1 个答案:

答案 0 :(得分:4)

由于类型擦除,这是不可能的。

相反,您可以在界面中添加Class<E> getEntityClass()方法。