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

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

import java.util.*; // utility工具的意思
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;
}
}

“使用了未经检查或不安全的操作”是什么意思?哪里的问题?
按照提示操作后是以下效果:

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 警告

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

import java.util.*;
public > public Main() {
}
public static void main(String[] args) {

HashMap hm = new HashMap();
hm.put("1", 11);
System.out.println(hm.get("1"));
}

}

用java1.5编译时会出现:

注意:Main.java 使用了未经检查或不安全的操作。

注意:要了解详细信息,请使用-Xlint:unchecked 重新编译。

出现这样的警告是因为:

java1.5使用了泛型的缘故,作如下修改:

HashMap hm = new HashMap();

改成:

HashMap<String, Integer> hm = new HashMap<String, Integer>();

就可以了。

那什么叫做泛型呢?

泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。STL以迭代器(Iterators)和容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库,容器的存在使这些算法有东西可以操作。STL包含各种泛型算法(algorithms)、泛型指针(iterators)、泛型容器(containers)以及函数对象(function objects)。STL并非只是一些有用组件的集合,它是描述软件组件抽象需求条件的一个正规而有条理的架构。

敢问是否是你的jdk路径设置不正确或是其他问题所致?在我机子上运行一切正常,你检查下你的jdk设置,还有就是转到文件所在目录执行javac和java命令,参考下面文章:

==================================================
JDK安装设置环境变量
一、前言

JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。目前已经正式发布的最新版本是JDK1.3。考虑到我对linux不熟悉,而且大多数都是在MS系统下,所以,在这里我用的是win2000。

二、下载,安装

下载地址为JAVA官方站点:java.sun.com,国内也到处都是。

Windows下,直接运行.exe文件,安装到一个目录,我这里用F:\jdk13作为例子。

三、配置

桌面上选择“我的电脑”(右键)

高级

环境变量

在“系统变量”--->“新建”

在变量名中输入:CLASSPATH,变量值中输入:

F:\JDK13\LIB\dt.JAR;F:\JDK13\LIB\TOOLS.JAR;F:\JDK13\BIN;然后确定;

好了,配置完了,要重新启动计算机后,环境变量才能有效的。

四、测试

(1)用文本编辑器写一个简单的java程序:

public class HelloWorld {

public static void main(String args[]) {

System.out.println("Hello World!");

}

}

这个例子就是著名的“Hello World”,它的功能就是显示“Hello World”。

注意:该文件名称必须为“HelloWorld.java”,大小写也区分。细心的朋友会注意到就是和public class后的名字一样的。

(2)编译:在dos命令提示符下执行:(注意大小写)

javac HelloWorld.java

如果正常的话,将生成HelloWorld.class文件。

(3)运行:在dos命令提示符下执行:(注意大小写)

java HelloWorld

这里有一个java初学者很有可能遇到的问题(不怕笑话,我也是)就是输入:

java HelloWorld.class

多了后面的.class,一定要注意,否则会出现下面的错误:

Exception in thread "main" java.lang.NoClassDefFoundError:HelloWorld/class

(本人猜想,是不是java翻译“.”的时候换成了“/”,或者是其他的本人不知道的原因)

好了,运行java HelloWorld应该会出现伟大的“Hello World”了。

到这一步,你已经成功配置好了JDK,可以开始漫长而痛苦(对于象我一样的,以前不懂java的朋友来说,可以用“痛苦”来形容,不理解的概念,不熟悉的java api...,不过,不要急,我将和大家一起慢慢入门,慢慢提高... ...)的Java过程了。

参考资料:http://zhidao.baidu.com/question/46441959.html

温馨提示:内容为网友见解,仅供参考
无其他回答

java 一个容器简单程序 为何编译时出现如下提示
(2)编译:在dos命令提示符下执行:(注意大小写)javac HelloWorld.java 如果正常的话,将生成HelloWorld.class文件。(3)运行:在dos命令提示符下执行:(注意大小写)java HelloWorld 这里有一个java初学者很有可能遇到的问题(不怕笑话,我也是)就是输入:java HelloWorld.class 多了后面的.class,一...

编写JAVA程序时,出错提示:使用未经检查或不安全操作;要了解详细信息,请...
改成 private LinkedList<Object> mm=new LinkedList<Object>();集合里面有个概念叫泛型。。。如果你不在后面声明放到容器里的类型,就会给出警告。不过还是可以编译通过的,要去除警告就在后面指定个类型。。

运行java程序时出现了"Exception in thread "main" java.lang.NullPoin...
从你的代码看在src下面必须有1.gif的图片才行(当然你有其他Source Folder也是一样的)。

如何解决java.lang.NoClassDefFoundError
简单总结就是,NoClassDefFoundError发生在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致的错误。发生NoClassDefFoundError错误时,你能看到如下的错误日志:Exception in thread "main" java.lang.NoClassDefFoundError 错误的信息很明显地指明main线程无法找到指定的类,而这个main线程可能时主线程或者其...

Exception in thread "main" java.lang,NoSuchMethodError:mai...
你的代码是java的j2ee代码,不需要main方法,但是,它不能像java桌面程序一样运行,你需要,将代码放在一个web 容器当中,然后通过ie来访问 搭建一个web服务器,最简单的办法是,下载一个myeclipse,然后,下载一个tomcat,在myeclipse中设置tomcat的位置,然后新建web项目,把你的代码都拷贝到这个项目下,启动...

一个java程序必须有main方法吗?
这样说吧,所有程序至少要有一个main方法。因为java虚拟机运行时,找的接口就是main方法,如果没有此方法,是不运行程序的你说的jsp servlet ,也是有main方法的,不过不是在你的程序中,而在应用服务器中,比如tomcat jboss 或者weblogic,然后它们会去读取你程序的入口web.xml ...

java初级面试题目?
5.Web.xml的作用四、其他1.Web安全性的考虑(表单验证、浏览器Basic方式的验证,应用程序的安全性,SSL,代码考虑)2.简单介绍您所了解的MVC。3.简单介绍所了解的XML。4.文档和编码规范5.Java中的分页、效率考虑。6.简单介绍您所了解的structs。Java面试题收藏:1.xml在项目中的作用2.s-EJB与e-EJB的区别3.会话...

异常:java.lang.IllegalStateException怎么解决?
1、在response.sendRedirect()后加return语句即可,如下:response.sendRedirect("login.jsp"); return;2、检查提交的url是否有误。3、如果页面中用了清缓存代码response.flushbuffer();又用到了response.sendRedirect(url); 可以把response.flushbuffer();去掉,或者用JS的window.location.href="url";来做...

一种简单的热部署方式结合动态编译实现java文件热替换
String importPagePathLogin = getJarFiles(jarPath);\/\/ 编译选项,在编译java文件时,编译程序会自动的去寻找java文件引用的其他的java源文件或者class。\/\/ -sourcepath选项就是定义java源文件的查找目录, -classpath选项就是定义class文件的查找目录,-d就是编译文件的输出目录。Map<String, String> ...

eclipse java 底部的那个显示运行结果的框被我一不小心关掉了,如何打 ...
那是eclipse种的Console控制台,重新显示方式有以下几种:1、方法一:快捷键:ALT+SHIFT+Q 2、方法二:点击工具栏上的“window”输入reset perspective 3、方法三:①选择上方工具栏“Window”功能栏目。②出现下拉菜单选择“show View”功能。③出现二级下拉菜单选择“console”功能 ...

相似回答
大家正在搜