黑马程序员技术交流社区
标题:
关于定义泛型类,泛型构造器的疑问!
[打印本页]
作者:
折纸时代
时间:
2012-12-22 10:39
标题:
关于定义泛型类,泛型构造器的疑问!
本帖最后由 司懿卓 于 2012-12-23 15:09 编辑
代码部分:
class MyClass<E>
{
public <T> MyClass(T t)
{
System.out.println("t的参数值为:" + t);
}
}
public class GenericDiamondTest
{
public static void main(String[] args)
{
//MyClass类声明中的E形参是String类型
//泛型构造器声明的T参数是Integer类型
MyClass<String> mc1 = new MyClass<>(5);
//显式指定泛型构造器中声明的T形参是Integer类型
MyClass<String> mc2 = new <Integer> MyClass<String>(5);
//MyClass类声明中的E形参是String类型
//如果显式指定泛型构造器中声明的T参数是Integer类型
//此时就不能使用"菱形"语法,下面代码错误
//MyClass<String> mc3 = new <Integer> MyClass<>(5);
}
}
复制代码
上面代码中 定义了泛型类,类型实参传入为String类型.
感觉没什么实际意义, 或者只是为了用泛型<String>来表示一个特殊的子类??
这样是否是只考虑用<String>来限定子类? 而和内部数据类型没有关系? (我感觉应该是这样的吧? )
作者:
折纸时代
时间:
2012-12-22 10:40
如果是的话,构造器的问题也就通了...
作者:
董将
时间:
2012-12-22 10:48
个人感觉,泛型在集合里面,在添加特定的集合元素的时候,起的是一个类型限制的问题,比如我传进一个学生对象(姓名,年龄),在进行循环遍历的时候,就会省去强制转换这个步骤,输出的语句就是这个对象表示的了,省略了一个步骤
一下是个人总结
泛型是如何使用的呢?
通过泛型来定义集合对象
ArrayList<数据类型> array=new ArrayList<数据类型>();
就是在创建对象的时候,在对象的后面跟着的<>里面就爱如明确的类型。
一般,我们泛型就是在集合类中常用。
泛型的好处是什么?
1,解决了警告问题(类型不明确)
2,避免了在获取元素的时候的类型转换问题
3,把在运行时的问题提前到了编译期间解决。
4,优化了程序设计,不需要再进行强制转换。
String 没有泛型
其他的大部分都加
泛型定义在方法上的好处是什么?
传什么类型就打什么类型。
作者:
折纸时代
时间:
2012-12-23 09:13
董将 发表于 2012-12-22 10:48
个人感觉,泛型在集合里面,在添加特定的集合元素的时候,起的是一个类型限制的问题,比如我传进一个学生对 ...
虽然有点答非所问,但是还是学到了些. 谢谢啦.
如果要仔细想下,说的也对. 限制作用,用在定义类时,
其实一个特殊的子类,也算是对类的一种限定吧..
作者:
filter
时间:
2012-12-23 15:29
3楼解释的很全面,个人感觉泛型用在方法和变量中更有用,大大提高了某一个方法的扩展性,API文档中的好多方法都含有泛型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2