java语言基础特性—第一部分(中)-java开发java经验技巧

java语言基础特性—第一部分(中)-java开发java经验技巧

ID:30778004

大小:92.00 KB

页数:9页

时间:2019-01-03

java语言基础特性—第一部分(中)-java开发java经验技巧_第1页
java语言基础特性—第一部分(中)-java开发java经验技巧_第2页
java语言基础特性—第一部分(中)-java开发java经验技巧_第3页
java语言基础特性—第一部分(中)-java开发java经验技巧_第4页
java语言基础特性—第一部分(中)-java开发java经验技巧_第5页
资源描述:

《java语言基础特性—第一部分(中)-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java语言基础特性一第一部分(中)-编程开发技术Java语言基础特性一第一部分(中)木文由ImportNew・陈晓舜翻译自javaworldo欢迎加入翻译小组。转载请见文末要求。参数化类型是一种泛型类型实例,泛型类型的类型参数被真实的类型参数(参数名称)替换。例如:Sct是参数化类型,其中真正类型参数String替换类型参数E。Java语言支持下面儿种真止类型参数:•实体类型:传入一个类或其他引用类型名称作为类型参数。例如,List,Animal作为参数传给E。•实体参数化类型:传入一个实体参数化类型名称作

2、为类型参数。例如,Set,List作为参数传给Eo•数组类型:传入一个数组作为类型参数。例如,Map,String传入给K,Strings传入给V。•类型参数:直接把类型参数传入作为类型参数。例如,在类Container{Setelements;}中,E就作为参数传给了E。•通配符:传入问号符作为类型参数。例如,Class,?号作为参数类型传给T。毎一个泛型类型都有原牛类型的存在,即不包含形参类型列表的泛型类型,例如,Class就是Class的原生类型。跟其他泛型类型不一样

3、,原生类型可以用于任何类型的对象。定义和使用泛型类型定义一个泛型类型需要指定形参列表并在它的实现中贯穿使用这些参数。使用泛型则需要在初始化吋传入真正的类型参数给形参。看-下清单5:Listing5.GenDemo>java(version1)classContainer{privateE[]elements;privateintindex;Container(intsize)elements=(E[])newObject[size];index=0;voidadd(Eelement){elements[index++]

4、=element;}Eget(intindex){returnelements]index];}intsize(){returnindex;}}publicclassGenDcmo{publicstaticvoidmain(String[]args){Containercon二newContainer(5);con.add(“North”);con.add(“South”);con.add("East”);con.add("West”);for(inti二0;i

5、System・out・printin(con・get(i));清单5展示了泛型的定义和保存合适参数类型的简单Container类型的使用。为了使代码简单点,我省略了一些错误检查代码。Container类通过指定形参类型列表把它自己定义为泛型。类型参数E用于指定保存被添加到内部数组的元素和取出元素时返回的类型。Container(intsize)构造函数通过elements=(E[])newObject[size];仓U建数组。如果你奇怪我为什么不指定elements=newE[size];,因为做不到啊:如果我们那样定义,会

6、导致ClassCastExceptiono编译清单5(javacGenDemo.java)oE□转换会导致编译器输出转换未被检查的警告。这标示着从Object[]向下转型为E[]nT能会导致类型安全问题,因为Object[]可以保存任何类型的对象。注意,尽管在这个例子中不会造成类型安全问题。在内部数组中不可能保存非E的对彖。我会在将来的文章告诉你怎么去掉这个警告信息。执行javaGenDemo运行这个程序。你可以看到下而的输出:NorthSouthEastWest类型参数界限Set是一个未绑定类型参数的例子,因为你可以传入任

7、何实际的参数类型给E。例如,你可以指定Set,Set或Seto有时,你希望可以限制传入给类型参数的实际类型参数的类型。例如,你可以希望限制类型参数只接受Employee和它的子类。你可以通过指定上界來限制类型参数,这是一个传入实际类型参数的最高限制。通过预留关键字extends后跟上限类型名称来指定上限类型。例如,Employees类限制了传入给Employees的类型必须为Employee或子类(例如,Accountant)。扌旨定ne

8、wEmployccs是可以的,但newEmployees就不行了。你可以给类型参数指定多个上界。然后,第一个限定必须为一个类,其他的限定必须为接口。每-个限定是通过&符来进行分割的。我们看一下清单6。Listing6.GenDemo.java(ver

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。