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);
}
}