2011-06-21 32 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版本,但除预期之外的任何版本都可能导致此问题。

相关问题