将抽象类与抽象泛型一起使用时遇到问题。
我可以实例化该子类,但是不能将其称为抽象超类型。
例如:
AbstractInstance<AbstractType> instance = new SubInstance()
哪里
SubInstance extends AbstractInstance(SubType)
给我“无法从SubInstance转换为AbstractInstance”。
我究竟做错了什么?
正确的示例如下。
public class Demo
{
/**
* Abstract Instance
*
* @param <Type>
*/
public abstract class AbstractInstance<Type extends AbstractType>
{
}
/**
* Abstract Generic Type
*
*/
public abstract class AbstractType
{
}
/**
* Sub Instance that extends AbstractInstance
*
*/
public class SubInstance extends AbstractInstance<SubType>
{
}
/**
* SubType that extends AbstractType
*
*/
public class SubType extends AbstractType
{
}
public static void main(String[] args)
{
//Type mismatch: cannot convert from Demo.SubInstance to Demo.AbstractInstance<Demo.AbstractType>
AbstractInstance<AbstractType> abstractInstance = new SubInstance();
}
}
最佳答案
将新零件更改为
AbstractInstance<? extends AbstractType> abstractInstance = new SubInstance();