黑马程序员技术交流社区

标题: 这些类的后面有个E是什么意思 [打印本页]

作者: 戴振良    时间: 2012-3-27 16:55
标题: 这些类的后面有个E是什么意思

作者: 李涛涛    时间: 2012-3-27 17:01
E表示泛型类,表示可以自己定义。
作者: 戴振良    时间: 2012-3-27 17:13
哦,原来如此!谢谢!
作者: 薛波    时间: 2012-3-27 17:17
泛型:
        JDK1.5版本后出现的新特性,用于解决安全问题,是一个安全机制。
好处:
        1.将运行时期出现的问题ClassCastException, 转移到了编译时期,方便程序员解决问题,让运行时期问题减少,安全。
        2.避免了强制转换麻烦。

什么时候定义泛型类:当类中要操作的引用数据类型不确定的时候。早期定义Object来完成扩展,现在定义泛型来完成扩展。
简单的泛型类:
class Fanxing<XX>
{
        private XX x;
        public void setObject(XX x)
        {
                this.x = x;
        }
        public XX getObject()
        {
                return x;
        }
}
泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类后,所有要操作的类型就已经固定了。
为了让不同的方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上。
如:public <QQ> void show(QQ q){};

特殊之处:静态方法不可以访问类上的泛型。
          如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
如:public static <D> void method(D d){}
泛型的限定:用于泛型扩展。
        1.  ? extends E:可以接受E类型或E的子类型。 泛型上限。
        2.  ? super E 可以接收E类型或者E的父类型.   泛型下限。

作者: 抓哇    时间: 2012-3-27 17:23
E是ElemType的缩写  元素类型的意思
作者: 戴振良    时间: 2012-3-27 17:46
薛波 发表于 2012-3-27 17:17
泛型:
        JDK1.5版本后出现的新特性,用于解决安全问题,是一个安全机制。
好处:

需要的就是您这样的好心人,回答的太好了,谢谢!!:handshake
作者: 戴振良    时间: 2012-3-27 17:46
抓哇 发表于 2012-3-27 17:23
E是ElemType的缩写  元素类型的意思

同样谢谢您!
作者: 罗闯    时间: 2012-3-27 18:49
这个你不需要特意去弄清楚,这个是泛型,就只集合里可以装的一些类,把一些类归纳在一起可以是E也可以是T,
设计思想是,你设计一个集合在装载数据的时候你不一定知道以后需要装的数据类型是什么,那么你可以用这些符号,这样使得代码弹性和可扩张性增强。

比如在计算机中经常用到一些数据结构,如队列,链表等,而其中的元素以前一般这么定义:object a=new object();
这样就带来一个严重的问题,用object来表示元素没有逻辑问题,但每次拆箱、封箱就占用了大量的计算机资源,导致程序性能低下,而这部分内容恰恰一般都是程序的核心部分,如果使用object,那么程序的表现就比较糟糕。
而使用泛型则很好的解决这个问题,本质就是在编译阶段就告诉编译器,数据结构中元素的种类,既然编译器知道了元素的种类,自然就避免了拆箱、封箱的操作,从而显著提高程序的性能。
比如List<string>就直接使用string对象作为List的元素,而避免使用object对象带来的封箱、拆箱操作,从而提高程序性能。

如果看到视频集合的话你应该就明白了。不用泛型的话,就需要类型转换。


希望对你有帮助

作者: 戴振良    时间: 2012-3-27 21:54
我还发现:类后面有K、T、V等的字符,这些又是什么意思啊?只想了解了解而已!




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