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

    一.

    泛型我们了解完基本原理之后,除了在集合中用来传递参数类型外,还有其它的应用。它还能为我们提供很多设计上的便捷。

    介绍一下以前和现在的定义方法,有什么不一样。

    这里面为了方便于应用,搞了一个工具类,和主要的程序分开发。

    对工具类的描述,现在要操作person,要用工具类对person对象进行操作,可以完成person对象的设置和获取。

    这个工具类只能操作person,不能操作其它对象。如果想要其它对象,还要书写Tool1,Tool2......这样很麻烦,怎么办?(对传输进来的person对象进行操作)

    可以不可以定义一个工具类,操作所有对象。如果想定义一个工具类,操作所有对象,应该找到所有对象的共性,比如将这里的person改为object就可以了。

    如果写成object了,那就意味着什么对象都能操作。

    有一个快捷修改操作,如上图所示。

    现在演示一下,建立学生和工人,以及人这三个类,学生和工人都继承人这个类,这是下面演示的基础。(这些都是在泛型主函数之外的部分)

    现在往主函数中创建一个工具类,然后传入一个学生类,再通过gerobject取出学生类。图书显示了波浪线,表明出错了。

    出错的原因是:学生往工具类中存储后,就意味着向上转型了,接着往外取的时候就是object类。要想取出特有类型的话,必须要强转。

    上面是我们以前的做法,运行一下,没有出错。

    现在一不小心,往里面传递了一个worker类,

    回过去看tool类,里面接收的是object类,所以往里面存储student类,或者worker类,都是可以的。编译时不会报错,但是上述程序在运行时出现了错误。

    这就是我们以前的做法,为了提高程序的扩展性,我们用的全都是object,什么对象都能往里面传递。好处是object出现,提高扩展性了,但是带有弊端了,就是要强转。不强转不能用。

    现在做一些改动,对tool中装载有object的程序,做一个改动。

    将修改前后写在一个java工具类中,上下对照着看。在写工具类的时候,这个是用来操作对象工具类,紧接着你要操作哪个对象,不确定。以前是用object,现在有了泛型,就不那么弄了。操作哪个对象,你给我传递,传递哪个,就操作哪个。在上面定义参数,这是5.0才有的。

    以前玩Arralist是java定义好的,现在这个是我们定义的,这叫做自定义泛型类。

    如果没有泛型就用object,你可以理解为泛型是object中的一种方案,但是这种方式更为安全。

    现在回过来取修改前面错误的程序,

    如果从头到尾都是student的话,编译运行是没有问题的,但是现在不小心输入了worker了。

    上面的输入worker的写法,如果是早期的写法,运行的时候就出现了错误。现在改成泛型的写法,编译都通过不了。这就是泛型的好处,进一步验证了泛型将运行时的问题,转到了编译时期。避免了强转的麻烦。

    这种方式要比object安全的多,但是书写麻烦,要写尖括号,

  • 相关阅读:
    MongoDB一键安装
    Mongo基本操作
    MongoDB AUTH结果验证及开启方法
    MongoDB AUTH结果验证
    MongoDB使用
    MongoDB-安装配置
    11204RAC-dbca建库脚本
    MySQL主从同步最佳实践
    实时抓取主从的同步状态
    守护神 Supervisor
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/8361376.html
Copyright © 2011-2022 走看看