我有以下类别:获得“不适用”与泛型类型编译错误
public interface IEntity<T extends IEntity<T>>
{
T createNewEntity(IEntityCreator creator);
}
public interface IEntityCreator
{
<T extends IEntity<T>> T createNewEntity(T source);
}
public abstract class EntityBase<T extends EntityBase<T>> implements IEntity<T>
{
@Override
public T createNewEntity(IEntityCreator creator)
{
return creator.createNewEntity(this); //Error here
}
}
我收到以下错误:
“约束不匹配:类型IEntityCreator的一般方法createNewEntity(T)不适用于参数(EntityBase)。推断的类型EntityBase不是有效的替代参数>“
我尝试了以下代码的不同方法,但没有成功:
public interface IEntity<T extends IEntity<T>>
{
T createNewEntity(IEntityCreator<T> creator);
}
public interface IEntityCreator<T extends IEntity<T>>
{
T createNewEntity(T source);
}
public abstract class EntityBase<T extends EntityBase<T>> implements IEntity<T>
{
@Override
public T createNewEntity(IEntityCreator<T> creator)
{
return creator.createNewEntity(this); //Error here
}
}
这一次的编译器说:
“在类型IEntityCreator的方法createNewEntity(T)是不适用的参数(EntityBase)”
,这是什么错误的原因是什么?我该如何纠正它?
感谢
你的第一行:公共接口IEntity> 。在IEntity
2014-09-26 09:06:29
尝试在'EntityBase.createNewEntity'声明中替换'EntityBase' –
talex
2014-09-26 09:13:47
如何用'return creator.createNewEntity((T)this'')替换? – 2014-09-26 09:14:37