1. 程式人生 > 實用技巧 >JAVA高階複習-泛型類、泛型方法的使用情景舉例

JAVA高階複習-泛型類、泛型方法的使用情景舉例

public class Student<T> {
    private T studentT;

    //靜態方法中不能使用泛型
//    public static void show(T studentT) {
//        System.out.println(studentT);
//    }

    public void read() {
        //泛型陣列的錯誤寫法,編譯不通過,報錯(Type parameter 'T' cannot be instantiated directly)
//        T[] arr = new T[10];

        //泛型陣列的正確寫法,編譯通過
        T[] objects = (T[]) new Object[10];
    }
}
package com.winson.example;

import java.util.List;

/**
 * 共性操作的DAO
 * 因為不清楚是操作那個具體的類,所以DAO定為使用泛型結構的泛型類
 */
public class DAO<T> {
    //新增一條記錄
    public boolean add(T t) {
        return false;
    }

    //刪除一條記錄
    public boolean delete(Integer id) {
        return false;
    }

    //修改一條記錄(根據ID)
    public boolean update(T t, Integer id) {
        return false;
    }

    //查詢一條記錄(根據ID)
    public T selectOne(Integer id) {
        return null;
    }

    //查詢所有記錄
    public List<T> selectAll(Integer id) {
        return null;
    }

    /**
     * 泛型方法:使用情景:獲取表中有多少條記錄;獲取最晚入職時間的人員
     */

    public <E> E getValue() {
        return null;
    }
}

package com.winson.example;

import com.winson.Student;

/**
 * @description:
 * @date: 2020/9/11 21:40
 * @author: winson
 */
public class StudentDAO extends DAO<Student> {
}

public class DAOTest {

    @Test
    public void test01() {
        StudentDAO studentDAO = new StudentDAO();
        //引數為具體的類
        boolean res = studentDAO.add(new Student());
        //引數為具體的類
        boolean update = studentDAO.update(new Student(), 1);

        boolean delete = studentDAO.delete(1);
        //返回值為具體的類
        List<Student> students = studentDAO.selectAll(1);
        //返回值為具體的類
        Student student = studentDAO.selectOne(1);
    }

}