您的位置:首页 > 编程语言 > Java开发

熬之滴水穿石:JAVA的世界(11)

2013-06-06 08:45 295 查看
23--泛型小结
我是在进入JAVA的世界里才知道泛型的,泛型最早来之于在C++。泛型编程你可以理解为任意的构造类型编程,当然就我的编码经历而言,我都是用泛型处理与集合有关的内容并且我相信这是一个最佳的选择。泛型编程我们在熟悉的一些框架如:ibatis里可以看到类似的写法。在泛型方法没出来前,我们底层的编译器其实是无法获知你加入集合中的是什么对象,所以装载了不同对象的时候就会出现类型安全的问题。用泛型编程的话,问题尽可能就在编译期间就会捕捉而不会在运行期间才知道。泛型编程和所有方法实际上一样,首先创建一个泛型实例,然后声明和指定泛型变量,然后再实现该方法。泛型方法的出现就是为了解决类型安全的问题。
在我的JAVA编码经历中泛型运用最多的类应首当属于ArrayList了。它的参数定义为ArrayList<E>的定义,在这个综括号里面的E其实就是你用真正的类型来代替。当然在我们泛型编程可以用任何JAVA认可的标识符来代替它。在运行方法中我们一方面可以通过使用在类声明的参数类型,一方面我们又可以使用未在类声明的参数类型。看上去是很自相矛盾,但这正是最为强大的地方。通过是在类声明的参数类型,非常好理解!eg:声明了 public class ArrayList<E>的方法,那么在相应的处理方法中就可以使用声明的参数了。而使用未在类声明的参数eg:pulic
<E extend 某object>方法体中一样,只是在方法的参数中声明。
在泛型编码中,在方法参数中用?的通配符来表示未知集合,表示该元素类型可以为任何元素类型的集合。但用?通配符时,可以操作元素方法!但添加元素的话,编译器会阻止任何可能破坏引用参数的行为。因为只有这样才能保障执行期间的安全性。通常我们在方法中看到<E
extends..>或者<? Extends...>,是的,在泛型里就是用Extends这个关键词来表示Extend或implement。其实泛型编码最为重要的事情就是要认清楚两个事情:1)我什么时候可以使用泛型方法,2)我什么时候使用通配符?
首先, 类型参数用于表述一个或多个的实参类型对方法或及其返回类型的依赖关系。我们就需要用泛型方法,如果没有那样的一个依赖关系的话,泛型方法就不应用使用。其次,如果我们类型实参是用于多态的,它的作用只是对不同的调用可以有一系列的实际的实参类型。就应该使用通配符,通配符就是为设计来支持灵活的子类型的而产生的。
(未完待续........)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: