zoukankan      html  css  js  c++  java
  • JAVA-初步认识-常用对象API(集合框架-泛型-泛型方法)

    一.

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

    本来如果是显示和打印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类型是可以进行一个应用的。

  • 相关阅读:
    Verilog非阻塞赋值的仿真/综合问题 (Nonblocking Assignments in Verilog Synthesis)上
    异步FIFO结构及FPGA设计 跨时钟域设计
    FPGA管脚分配需要考虑的因素
    An Introduction to Delta Sigma Converters (DeltaSigma转换器 上篇)
    An Introduction to Delta Sigma Converters (DeltaSigma转换器 下篇)
    中国通信简史 (下)
    谈谈德国大学的电子专业
    中国通信简史 (上)
    Verilog学习笔记
    Verilog非阻塞赋值的仿真/综合问题(Nonblocking Assignments in Verilog Synthesis) 下
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/8412215.html
Copyright © 2011-2022 走看看