JAVA高階複習-泛型類、泛型方法的使用情景舉例
阿新 • • 發佈:2020-09-11
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); } }