java为什么我会在这里收到类型安全警告?(仿制药)
我最近想了解更多关于泛型方法的知识,并创建了几个示例,但我不清楚下面的类型安全性。这里有一个例子:
public class GeneralMethod
{
public static void main( String[] args )
{
Repository rep = new Repository();
Set<ConcreteObject> set = rep.getObject();
}
}
abstract class AbstractRepository
{
public abstract <T extends SuperObject> Set<T> getObject();
}
class Repository extends AbstractRepository
{
@Override
public Set<ConcreteObject> getObject() //<- Type safety!
{
return new HashSet<ConcreteObject>();
}
}
abstract class SuperObject
{
}
class ConcreteObject extends SuperObject
{
}
eclipse中的Repository.class
中出现了以下类型安全性:
Type safety: The return type Set < ConcreteObject > for getObject() from the type Repository needs checked conversion to conform to Set < SuperObject > from the type AbstractRepository
为什么编译器想要符合Set < SuperObject > instead of Set < T extends Superobject >
您如何告诉每个存储库使用自己的类型实现getObject()
方法,并且只在方法签名中使用泛型?(意思是不定义类内通用签名)
谢谢——, 伊梅恩
共 (0) 个答案