黑马程序员技术交流社区

标题: 急~ 为什么编译显示 使用了未经检查或不安全的操作 [打印本页]

作者: yaowenjiang    时间: 2011-12-6 16:06
标题: 急~ 为什么编译显示 使用了未经检查或不安全的操作
本帖最后由 yaowenjiang 于 2011-12-7 18:05 编辑

import java.util.*;
public class PersonOne{
        public static void main(String [] args){
                Collection c=new ArrayList();
                c.add("Hello");                          
                c.add(new Name("J1","K2"));
                c.add(new Integer(100));
                System.out.println(c);
        }
}
class Name{
        private String firstName;
        private String lastName;
        Name(String f,String l){
                firstName=f;
                lastName=l;
        }
        public String getFirstName(){
                return firstName;
        }
        public String getLastName(){
                return lastName;
        }
        public String toString(){
                return firstName+" "+lastName;
        }



}
作者: 李荣壮    时间: 2011-12-6 16:33
本帖最后由 李荣壮 于 2011-12-6 16:40 编辑

............
作者: 黄杰    时间: 2011-12-6 17:29
因为你的ArrayList容器中存入了多种类型对象,编译器不知道你存入的类型是什么类型,你在操作的时候容易会产生错误,所以提示使用泛型来约束存入的对象
作者: t_mac    时间: 2011-12-6 18:53
我们一般用到容器都会使用泛型的,就是指定这个容器装什么类型的对象,你如果没指定的话,编译时系统会提示你可能出现安全问题,打个比方说,你定义了一个容器,你只想让它装String类型的对象,但你又没使用泛型,所以当你往里添加一个其他类型的对象也不会报错,但这不是你想要的,也就是带来了安全隐患。
作者: t_mac    时间: 2011-12-6 18:53
我们一般用到容器都会使用泛型的,就是指定这个容器装什么类型的对象,你如果没指定的话,编译时系统会提示你可能出现安全问题,打个比方说,你定义了一个容器,你只想让它装String类型的对象,但你又没使用泛型,所以当你往里添加一个其他类型的对象也不会报错,但这不是你想要的,也就是带来了安全隐患。
作者: 刘基军    时间: 2011-12-7 10:17
泛型就是针对LZ这样,把其他类型的元素添加到同一个集合中的情况,所以使用泛型后即可解决该问题。
格式:
ArrayList<T> al = new ArrayList<T>(); //T指的就是实际元素的类型,只能为引用数据类型(Integer等),而不能为基本数据类型(int等)
例如:
ArrayList<String> al = new ArrayList<String>();




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2