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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 折纸时代 中级黑马   /  2012-12-22 10:39  /  1784 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 司懿卓 于 2012-12-23 15:09 编辑

代码部分:
  1. class MyClass<E>
  2. {
  3.         public <T> MyClass(T t)
  4.         {
  5.                 System.out.println("t的参数值为:" + t);
  6.         }
  7. }
  8. public class GenericDiamondTest
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 //MyClass类声明中的E形参是String类型
  13.                 //泛型构造器声明的T参数是Integer类型
  14.                 MyClass<String> mc1 = new MyClass<>(5);
  15.                 //显式指定泛型构造器中声明的T形参是Integer类型
  16.                 MyClass<String> mc2 = new <Integer> MyClass<String>(5);
  17.                 //MyClass类声明中的E形参是String类型
  18.                 //如果显式指定泛型构造器中声明的T参数是Integer类型
  19.                 //此时就不能使用"菱形"语法,下面代码错误
  20.                 //MyClass<String> mc3 = new <Integer> MyClass<>(5);
  21.         }
  22. }
复制代码
上面代码中 定义了泛型类,类型实参传入为String类型.
感觉没什么实际意义, 或者只是为了用泛型<String>来表示一个特殊的子类??
这样是否是只考虑用<String>来限定子类? 而和内部数据类型没有关系? (我感觉应该是这样的吧? )

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
如果是的话,构造器的问题也就通了...  
回复 使用道具 举报
个人感觉,泛型在集合里面,在添加特定的集合元素的时候,起的是一个类型限制的问题,比如我传进一个学生对象(姓名,年龄),在进行循环遍历的时候,就会省去强制转换这个步骤,输出的语句就是这个对象表示的了,省略了一个步骤
一下是个人总结
泛型是如何使用的呢?
通过泛型来定义集合对象
ArrayList<数据类型> array=new ArrayList<数据类型>();

就是在创建对象的时候,在对象的后面跟着的<>里面就爱如明确的类型。


一般,我们泛型就是在集合类中常用。

泛型的好处是什么?
1,解决了警告问题(类型不明确)
2,避免了在获取元素的时候的类型转换问题
3,把在运行时的问题提前到了编译期间解决。
4,优化了程序设计,不需要再进行强制转换。



String 没有泛型
其他的大部分都加

泛型定义在方法上的好处是什么?
传什么类型就打什么类型。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
董将 发表于 2012-12-22 10:48
个人感觉,泛型在集合里面,在添加特定的集合元素的时候,起的是一个类型限制的问题,比如我传进一个学生对 ...

虽然有点答非所问,但是还是学到了些.  谢谢啦.
如果要仔细想下,说的也对. 限制作用,用在定义类时,
其实一个特殊的子类,也算是对类的一种限定吧..
回复 使用道具 举报
3楼解释的很全面,个人感觉泛型用在方法和变量中更有用,大大提高了某一个方法的扩展性,API文档中的好多方法都含有泛型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马