Java高级——泛型

本文主要讲述泛型的使用

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> {
    
}

  

上一篇:好程序员大数据学习路线分享Scala系列之泛型


下一篇:C相当于用于java参数/返回类型