泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。
和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。
一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。
/**
* 自定义泛型分页实体类
*/
public class Page<T> {
//每页显示个数
private int pageSize;
//当前页码
private int pageIndex;
//总页码
private int totalPage;
//总记录数
private int totalCount;
//当前页数据
private List<T> rows;
public Page() {}
public Page(int pageSize, int pageIndex, int totalPage, int totalCount, List<T> rows) {
this.pageSize = pageSize;
this.pageIndex = pageIndex;
this.totalPage = totalPage;
this.totalCount = totalCount;
this.rows = rows;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
@Override
public String toString() {
return "Page{" +
"pageSize=" + pageSize +
", pageIndex=" + pageIndex +
", totalPage=" + totalPage +
", totalCount=" + totalCount +
", rows=" + rows +
'}';
}
}
/**
* 学生实体类
*/
public class Student {
private String name;
private String address;
public Student() {
}
public Student(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}
/**
* 泛型类测试
*/
@Test
public void test1() {
//如果定义了泛型类,实例化时没有指定泛型类的类型,则认为此泛型类型为Object。
//如果定义了泛型类,建议在实例化时,指定泛型类的类型。
List<String> names = new ArrayList<>();
names.add("李四");
names.add("张三");
Page<String> page = new Page<>(10, 1, 100, 1000, names);
System.out.println(page);
List<Student> students = new ArrayList<>();
students.add(new Student("张三", "上海"));
students.add(new Student("李四", "北京"));
students.add(new Student("王武", "南京"));
Page<Student> page1 = new Page<>(10, 1, 100, 1000, students);
System.out.println(page1);
}
测试结果
Page{pageSize=10, pageIndex=1, totalPage=100, totalCount=1000, rows=[李四, 张三]}
Page{pageSize=10, pageIndex=1, totalPage=100, totalCount=1000, rows=[Student{name='张三', address='上海'}, Student{name='李四', address='北京'}, Student{name='王武', address='南京'}]}