簡體   English   中英

什么是未經檢查和不安全的操作?

[英]What is unchecked and unsafe operation here?

我有以下代碼:

private static final Set<String> allowedParameters;
static {
    Set<String> tmpSet = new HashSet();
    tmpSet.add("aaa");
    allowedParameters = Collections.unmodifiableSet(tmpSet);
}

它導致:

Note: mygame/Game.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

當我使用建議的選項重新編譯時,我看到一個指針(^)指向HashSet();前面的“new” HashSet();

有誰知道這里發生了什么?

是的,你正在創建一個新的HashSet而不說明它應該包含哪個類,然后斷言它包含字符串。 將其更改為

 Set<String> tmpSet = new HashSet<String>();

當您使用支持新J2SE 1.5功能的類 - 泛型時,會出現這些消息。 如果沒有明確指定集合內容的類型,則可以獲取它們。

例如:

List l = new ArrayList();
list.add("String");
list.add(55);

如果您想擁有單一數據類型的集合,可以通過以下方式刪除消息:

List<String> l = new ArrayList<String>();
list.add("String");

如果您需要將多種數據類型放入一次集合中,您可以:

List<Object> l = new ArrayList<Object>();
list.add("String");
list.add(55);

如果將-Xlint:unchecked參數添加到編譯器,則會獲得有關該問題的特定詳細信息。

有關詳細信息,請參閱此處: http//forums.sun.com/thread.jspa?threadID = 584311

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM