2011-06-21 38 views

回答

4

可能因爲您沒有正確使用泛型。也許你在將遺留代碼與通用代碼混合在一起。

這裏有一個報價來回the official trail on type erasure

Note: WarningDemo.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details.

這可以使用在原始類型的操作的較舊的API時,出現如圖下面WarningDemo程序:

public class WarningDemo { 
    public static void main(String[] args) { 
     Box<Integer> bi; 
     bi = createBox(); 
    } 

    static Box createBox() { 
     return new Box(); 
    } 
} 

我建議你按照建議,編譯時加上-Xlint:unchecked選項。這應該揭示代碼中哪些部分存在問題。

+1

我沒有在我的類中使用泛型,我使用集合編寫了簡單的java類。 –

+2

「*我在課堂上不使用泛型*」 - 這可能是確切的問題。你在使用任何'List','Set'或其他'Collection'嗎?在這種情況下,你不應該使用*原始類型*。 – aioobe

+0

我將發送代碼plz檢查..... –

2

此選項啓用/禁用特定警告。看起來你的代碼會產生這些警告。如果您使用的是IDE,請注意其產生的警告。這可能非常有幫助。

並嘗試做什麼編譯器爲您提供:只需重新編譯這個選項,看看會發生什麼。

+0

+1 - 做那個男人說的話(和編譯器) –

0

也許,那是因爲你需要聲明一個List對象,說(EG),不省略「<」和「>」:

List<Integer> list = new ArrayList<Integer>(); 

我想聲明的堆棧對象,而在NetBeans中, NetBeans編譯我的代碼時沒有錯誤消息。也許,javac編譯器的情況有所不同。

0

無論何時編譯包含java.util.*;包的Java文件,都必須使用-xlint重新編譯它。

此外,請檢查您的jdk版本(使用java -version)。我相信它一定很老。安裝Java的新版本(如版本7),您將不會收到警告。

0

這可能是由jdk版本不匹配造成的,不一定是舊的jdk版本,但除預期之外的任何版本都可能導致此問題。

相關問題