本文主要讲述泛型的使用

1、在集合中的使用

2、自定义泛型类、泛型接口、泛型方法

3、泛型与继承的关系

4、通配符

由于第一点和第二点在平常的编码工作中已熟练,本文重点讲述后面两点。

直接show the code:

package com.learn;

import java.util.List;

public class ParentGeneric<T> {
    private String name;

    private int id;

    private T t;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

    // 声明泛型方法-单个
    public <E> E getE(E e) {
        return e;
    }

    // 声明泛型方法-多个
    public <E> E[] getArray(E[] arr) {
        return arr;
    }

    // 声明泛型方法-交互
    public <E> void fromArrayToList(E[] arrayE, List<E> listE) {
        for (E e : arrayE) {
            listE.add(e);
        }
    }

    @Override
    public String toString() {
        return "ParentGeneric [name=" + name + ", id=" + id + ", t=" + t + "]";
    }

}

/*
 * 继承泛型类或接口时,可以指名泛型的类型
 *
 * 通常在DAO处理的时候,采用指名泛型类型(泛型就是某个Data Access Object)
 * 如:public class StudentDAO extends AbstractDAO<Student>{内部CRUD方法}
 * 同理:  public class TeacherDAO extends AbstractDAO<Teacher>{内部CRUD方法}
 *
 * 分析源码:学习泛型方法
 * public interface Collection<E> extends Iterable<E> {
 *      <T> T[] toArray(T[] a);
 * }
 *
 */

class SonOneGeneric<T> extends ParentGeneric<T> {

}

class SonTwoGeneric extends ParentGeneric<Integer> {

}

  

02-13 02:17