Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未检查的铸件警告,需要澄清_Java_Warnings - Fatal编程技术网

Java 未检查的铸件警告,需要澄清

Java 未检查的铸件警告,需要澄清,java,warnings,Java,Warnings,假设我们正在处理以下设置: A extends B Main的职责是: public void doIt() { List<A> listOfA = new ArrayList<A>(); listOfA.add(new A()); listOfA.add(new A()); C c = new C(); // We know that really, listOfA is going to be modified //

假设我们正在处理以下设置:

A extends B
Main的职责是:

public void doIt() {
    List<A> listOfA = new ArrayList<A>();
    listOfA.add(new A());
    listOfA.add(new A());

    C c = new C();
    // We know that really, listOfA is going to be modified
    //  in some way and will be returned to us, thus, it is 
    //  ok to cast result back to what we know it to be
    List<A> a = (List<A>) c.doSomethingWithListOfA(listOfA);
}
(列表)c.doSomethingWithListOfA(listOfA)的演员阵容;返回时显示
-类型安全:未选中从列表到列表的强制转换
警告

我想知道这是否可能是因为其他类也可能扩展B,从而使编译器不确定扩展B的实际上是a列表还是X列表?


除此之外,如何检查警告?(未选中强制转换)

它不是类型安全的,因为该方法可以返回任何类型的列表,这些类型是B的子类型,可能是a,也可能不是a

写这个怎么样:

public <T extends B> List<T> doSomethingWithListOfA(List<T> listOfObjectsThatExtendB) {
  return listOfObjectsThatExtendB;
}
公共列表doSomethingWithListOfA(对象列表hatExtendDB){
返回对象列表hatExtendDB;
}
现在不再需要铸造:

List<A> a = c.doSomethingWithListOfA(listOfA);
List a=c.doSomethingWithListOfA(listOfA);
List<A> a = c.doSomethingWithListOfA(listOfA);