有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案