JAVA基础(四十八)——泛型

一、目录

  • 泛型的介绍
  • 泛型的好处
  • 泛型的细节
  • 泛型的练习

二、泛型的介绍

  1. 泛型又称参数化类型,是JDK5.0出现的新特性,解决数据类型的安全性问题。
  2. 在类声明或实例化时只要指定好需要的具体类型即可。
  3. Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常。同时,代码更加简洁、健壮。
  4. 泛型的作用是:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值的类型,或者是参数类型。

泛型的语法:

  • 泛型的声明
    interface 接口{}和class 类名<K,V>{}
    比如:List、ArrayList…
    1. 其中,T,K,V不代表值,而是表示类型。
    2. 任意字母都可以。常用T表示,是Type的缩写。
  • 泛型的实例化
    要在类名后面指定类型参数的值(类型)。如:
    1. List strList = new ArrayList();
    2. Iterator iterator = customers.iterator();

三、泛型的好处

  1. 不能对加入到集合ArrayList中的数据类型进行约束(不安全的)。
  2. 遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响。

四、泛型的细节

  1. interface List{}, public class HashSet{}…等等,这里的T、E只能是引用类型,不能是基本数据类型。例如Integer可以,但Int就不行。
  2. 在指定泛型的具体类型后,可以传入该类型或者其子类类型。
  3. 泛型使用形式:List list = new ArrayList();
  4. 在实际开发中,往往会采用简写的方式:List list = new ArrayList<>();编译器会默认<>里面就是Integer。
  5. 如果不写泛型,比如List list = new ArrayList(); 默认给它的泛型是Object。

五、泛型的练习

定义Employee类:

  1. 该类包含:private成员变量name、sal、birthday,其中birthday为MyDate类的对象;
  2. 为每一个属性定义getter、setter方法;
  3. 重写toString方法输出name、sal、birthday;
  4. MyDate类包含:private成员变量month、day、year;并为每一个属性定义getter、setter方法;
  5. 创建该类的3个对象,并把这些对象放入ArrayList集合中(ArrayList需使用泛型来定义),对集合中的元素进行排序,并遍历输出。

排序方法:调用ArrayList的sort方法,传入Comparator对象(使用泛型),先按照name排序,如果name相同,则按生日日期的先后排序。

package com.javageneric;

import java.util.ArrayList;
import java.util.Comparator;

public class JavaGeneric {
   

    public static void main(String[] args) {
   
        ArrayList<Employee> employees = new ArrayList<>();

        employees.add(new Employee("Jack", 1000, new MyDate(13, 11, 1992)));
        employees.add(new Employee("Tom", 11100, new MyDate(2, 1, 1982)));
        employees.add(new Employee("Trump", 100000, new MyDate(19, 3, 1963)));
        employees.add(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值