码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA-初步认识-常用对象API(集合框架-泛型-泛型方法)

时间:2018-02-06 11:04:58      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:gif   java   info   接收   错误   print   font   长度   blog   

一.

刚才说了一下泛型类,现在准备说另外一个,在工具类的基础上演示一下(基于上一节的泛型工具类)。

技术分享图片

技术分享图片

本来如果是显示和打印String类的方法,参数中直接表明String类型即可,但是如果想显示和打印Intrger类型的参数,那么就需要将参数改为object。

基于泛型工具类,书写可以是下面这样的。工具类里面指定什么类型,方法就跟着操作什么类型。

技术分享图片

这样书写是否行得通,来演示一下,

技术分享图片

传递String类型时没有问题,但是工具类中的泛型是传递什么类型都可以,那么改成Integer试一下,集成工具显示了错误。

技术分享图片

因为定义的类带有泛型,而tool这个引用指向的对象当中明确的类型是String,那么这个对象就只能操作凡是具备String参数的方法。这个方法一明确以后,show里面就已经是String了,那么再传递其它类型就失败了,因为类型检查没过去,编译的时候没过去。

现在我们想show里面是任意类型的,怎么办?这就意味着show方法操作的对象类型不确定。有人提议将工具类中show方法的参数类型改为object,这是可以的。因为这些对象最终调用的都是object中的方法,第二张截图所示,多态。

技术分享图片

技术分享图片

还可以做第二件事,如果是不明确类型的情况下,object其实是一种具体类型。还可以是,往里面传递什么,就操作什么,可以定义泛型,将泛型定义在方法上。

这就是定义泛型了。(w str)是在使用参数,<w>是在定义参数,只有定义了才能使用。泛型是用于定义的?

技术分享图片

将泛型定义在方法上之后,什么类型都可以show了,源程序编译运行都没有问题。

技术分享图片

print泛型是跟着对象走的,show的泛型是在方法上自定义的。

接着对上面的程序进行演示,添加一个静态的method方法。集成环境显示编译是错误的,相较于前面的print方法,这里是多出了一个静态修饰。

技术分享图片

静态是不需要对象的,泛型是需要对象来明确。静态不知道QQ怎么用,两全其美的解决方法如下图,既要是静态,又要是method方法能结构多种类型。

技术分享图片

技术分享图片

泛型方法的基本使用讲解完了。

再说一点,show方法和print方法接收的是字符串的话,能否打印字符串的长度呢?下面截图显示是不可以的,一旦使用了泛型,变量类型是不确定的,那怎么能使用一个具体对象的方法,万一传递的是person类型,怎么能写成str.length()。但是这个变量有些方法是可以用的,

技术分享图片

技术分享图片

 哪些方法是可以用的呢?用点号显示出来。我们知道无论传递什么类型进来,肯定都是object类型的对象,因此,肯定具备object方法。

如果show或者print方法里面直接写成object的话,那么只能使用object方法,但是,如果写成泛型的形式,后面会讲述到,这个W类型是可以进行一个应用的。

技术分享图片

 

 

 

 

 

 

 

 

 

技术分享图片

JAVA-初步认识-常用对象API(集合框架-泛型-泛型方法)

标签:gif   java   info   接收   错误   print   font   长度   blog   

原文地址:https://www.cnblogs.com/wsw-bk/p/8412215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!