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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑彬 中级黑马   /  2012-8-15 14:37  /  1425 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑彬 于 2012-8-17 00:08 编辑

Class<? extends String> cls1=str1.getClass();
Class<String> cls2=String.class;
Class<?> cls3=Class.forName("java.lang.String");
为什么这样写,一定要加泛型吗?视频上都没有这样要求?
是不是自己的MyEclipse版本的问题?我是10.0版本的。

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
泛型不是一定要加,可以不加的,而且泛型仅仅用于编译时检查代码有没有错误,编译之后就没有用了。
但是泛型有它的好处,
第一:源代码保护。
第二:类型安全。这点是最显而易见的,抛弃了使用ArrayList时各种强制类型转换。
第三:更清晰地阅读代码。因为没有了强制类型转换,所以代码自然显得更清晰。
第四:更好的运行效率,因为泛型可以避免装箱和拆箱所带来的损耗,垃圾回收的次数也会减少。这点正是泛型神奇的地方,开发历史上抽象能力的上升往往意味着性能的下降,但是泛型却不是!

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 很给力!

查看全部评分

回复 使用道具 举报
最主要的还是 为了提高你对数据操作的安全性
还有阅读性。
也是对数据操作容器的归类
回复 使用道具 举报
王程 发表于 2012-8-15 16:02
泛型不是一定要加,可以不加的,而且泛型仅仅用于编译时检查代码有没有错误,编译之后就没有用了。
但是泛 ...

Class<? extends String> cls1=str1.getClass();
这句话能具体解释一下吗
回复 使用道具 举报
陈红建 发表于 2012-8-15 19:26
最主要的还是 为了提高你对数据操作的安全性
还有阅读性。
也是对数据操作容器的归类 ...

Class<? extends String> cls1=str1.getClass();
这句话能具体解释一下吗
回复 使用道具 举报
郑彬 发表于 2012-8-15 23:23
Class

泛型就是 将一个集合 指定为某种类型。例如ArrayList<Integer> 这个集合中只能存放Integer类型的数据

泛型中的通配符 "?"
限定边界(上边界)可以限定Number类以及继承它的子类
ArrayList<? extends Number> = new ArrayList<Integer>()
ArrayList<? extends Number> = new ArrayList<String>() 这样是错误的因为String不是Number的子类

限定边界(下边界)可以限定Integer以及他的父类
ArrayList<? super Integer> = new ArrayList<Number>()
ArrayList<? super Integer> = new ArrayList<byte>() 这样是错误的因为byte不是Integer的子类
回复 使用道具 举报
申请加分
回复 使用道具 举报
郑彬 中级黑马 2012-8-17 00:08:50
8#
问题已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马