回 帖 发 新 帖 刷新版面

主题:[求助]请问这是怎么回事?为何编译时出现如下提示?

java 一个容器简单程序 为何编译时出现如下提示

C:\workspace\08.2.25\Test>javac Test4.java
注意:Test4.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

import java.util.*; 
public class Test4 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("字符串!");
        c.add(new Integer(600));
        c.add(new Name("Xiao", "Bo"));
        System.out.println(c.size());
        System.out.println(c);
    }
}

class Name {
    String firstName, lastName;
    Name(String f, String l) {
        firstName = f;
        lastName = l;
    }
    public String toString() {
        return "您的名字是:" + firstName + "-" + lastName;
    }
}
“使用了未经检查或不安全的操作”是什么意思?哪里的问题?(以前的程序里都没有出过这个问题,并且都是在本机上操作的)

回复列表 (共5个回复)

沙发

按照提示操作后是以下效果:

C:\workspace\08.2.25\Test>javac Test4.java -Xlint:unchecked
Test4.java:5: 警告:[unchecked] 对作为普通类型 java.util.Collection 的成员的 add
(E) 的调用未经检查
                c.add("字符串!");
                     ^
Test4.java:6: 警告:[unchecked] 对作为普通类型 java.util.Collection 的成员的 add
(E) 的调用未经检查
                c.add(new Integer(600));
                     ^
Test4.java:7: 警告:[unchecked] 对作为普通类型 java.util.Collection 的成员的 add
(E) 的调用未经检查
                c.add(new Name("Xiao", "Bo"));
                     ^
3 警告

C:\workspace\08.2.25\Test>


这是怎么回事啊,[em10][em10],我该怎么办?

我的classpath     
.;C:\Program Files\Java\jdk1.6.0_03\lib\tools.jar;C:\Program Files\Java\jre1.6.0_03\lib\rt.jar

板凳

Collection c = new ArrayList();

修改为

Collection<Object> c = new ArrayList<Object>();

3 楼

谢谢啊。
我还有一个问题,什么情况下必须加上这个<Object>?什么情况下可以不写?

4 楼

这不是用泛型吗?

5 楼

<Object>泛型机制是JDK1.5新增的,如果代码中的集合类,比如List之类没有使用泛型,在编译时就会有上面的警告。

我来回复

您尚未登录,请登录后再回复。点此登录或注册