A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马任雪刚 中级黑马   /  2012-7-4 18:42  /  2430 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马任雪刚 于 2012-7-4 23:28 编辑

这两种方法有什么区别呢???
//泛型方法。
class Demo
{
        public <T> void method(T t)
        {
                System.out.println(t);
        }
}

//多态的应用。
public static void sop(Object obj)
{
        System.out.println(obj);
}

4 个回复

倒序浏览
泛型就是类型参数化, 好处是编译器会检查参数类型.
多态就是多个类由继承(实现接口)得到的一致外观, 好处是简化代码, 隔绝修改

回复 使用道具 举报
//泛型方法。
class Demo
{
         public <T> void method(T t)
         {
                 System.out.println(t);
         }
}
这个例子,定义了泛型,将参数指定为T,这就把程序运行时才可能出现的错误放到了编译时出现,如果传的参数不对, 在程序编译时就会展现出来,有利于程序员修改程序。

public static void sop(Object obj)
{
         System.out.println(obj);
}

这个例子在程序编译时,是不会报错的,只有程序运行时,如果传入的参数不对,才会报错。

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
泛型是java1.5之后引入的一个特性,可以用限制传入参数的类型,比如:ArrayList<String> a=new ArrayList<String>();那a中就只能就能放入String 类型的字符串!
多态意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。比如方法的重载和覆写!

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
可以说泛型是更好的多态。在jdk1.5之前没有泛型,我们如果想通过多达实现代码的重用,通常按你写的一样,以最宽泛的
对象Object为参数传入,但毕竟我们传入的通常不是Object不是一个具体的子类,比如Student,所以在代码内部如果
想要使用Student对象特有的方法,如getName(),就不得不对传入的参数进行强烈类型转换Student stu = (Student)obj;
stu.getName()...
而如果使用了泛型,预先就声明传入的将是什么类型的参数,在内部得到参数时就不用强制类型转换了。这样很方便,提高
了代码效率。

更重要的一条是,泛型能将可能出现的错误提前到编译阶段就暴露出,这样就能更早地解决错误。不至于造成不好的用户体验!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马