簡體   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