欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java泛型编程,

来源: javaer 分享于  点击 44004 次 点评:73

Java泛型编程,


这是我开技术博客以来的第二篇文章。这周苏州一直下着雨,想念九龙湖了,很不cool...

参考http://www.ibm.com/developerworks/cn/java/j-djc02113/

 

为理解泛型类型为何如此有用,我们要将注意力转向 Java 语言中最容易引发错误的因素之一 - 需要不断地将表达式向下类型转换(downcast)为比其静态类型更为具体的数据类型(请参阅参考资料中的“The Double Descent bug pattern”,以了解进行数据类型转换时,可能会碰到的麻烦的某些方面)。

程序中的每个向下类型转换对于 ClassCastException 而言都是潜在的危险,应当尽量避免它们。但是在 Java 语言中它们通常是无法避免的,即便在设计优良的程序中也是如此。

在 Java 语言中进行向下类型转换最常见的原因在于,经常以专用的方式来使用类,这限制了方法调用所返回的参数可能的运行时类型。例如,假定往 Hashtable 中添加元素并从中检索元素。那么在给定的程序中,被用作键的元素类型和存储在散列表中的值类型,将不能是任意对象。通常,所有的键都是某一特定类型的实例。同样地,存储的值将共同具有比 Object 更具体的公共类型。

 

要消除如上所述的数据类型转换,有一种普遍的方法,就是用 泛型类型来增大 Java 类型系统。可以将泛型类型看作是类型“函数”;它们通过类型变量进行参数化,这些类型变量可以根据上下文用各种类型参数进行 实例化

 

小结:

1) 在定义一个泛型类的时候,在 “<>”之间定义形式类型参数,例如:“class TestGen<K,V>”,其中“K” , “V”不代表值,而是表示类型。
2) 实例化
泛型对象的时候,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。例如:
    TestGen<String,String> t=new TestGen<String,String>();
3) 不能在基本类型实例化泛型参数。

4) 泛型中<K extends Object>,extends并不代表继承,它是类型范围限制。

5) 不会使用在static的类型上。

相关文章

    暂无相关文章
相关栏目:

用户点评