繁体   English   中英

使用泛型时有关原始类型的Eclipse IDE警告

[英]Eclipse IDE warnings about Raw types when using Generics

我看不出为什么Eclipse在代码行下面会在生成行m1()中创建新的ArrayList的代码下方产生黄色的波浪线(警告)。 当我仍然无法将非String对象添加到Collection c时,IDE为什么要在新的ArrayList旁边紧跟<>? 在执行时,它们也会被类型擦除,因此试图了解它是否真的意味着什么。

import java.util.ArrayList;
import java.util.Collection;

public class Main {

    public static void main(String[] args) {
        m1();
    }

    private static  Collection<String> m1() {
        Collection<String> c = new ArrayList();//gives typesafety warning for missing <>
        c.add("A");
        c.add("B");
        c.add(1); // does not let me add a non-String type anyways
        return c;
    }
}

警告是给new ArrayList(); ,因为您要创建没有泛型的ArrayList对象。 即使您为引用变量提供了泛型,在某些情况下您也可以添加String类对象以外的对象。 喜欢:

您正在创建类似: Collection<String> c = new ArrayList(); 由于引用具有泛型类型,因此String编译器将仅检查引用,并且不允许使用除string以外的任何内容。 但以防万一:

Collection<Integer> intColl = (Collection)c;

在这种情况下,您甚至可以在集合中添加整数。 这就是为什么它发出警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM