Java泛型定义泛型的语法泛型使用细节自定义泛型自定义泛型接口自定义泛型方法泛型的继承与通配符JUnit练习
Java泛型定义
E的部分全部替换成我们指定的类型
1.泛型方法,可以定义在普通类中,也可以定义在泛型类中
2.当泛型方法被调用时,类型会确定
package com.study.generic;
import org.junit.jupiter.api.Test;
import java.util.*;
public class demo04 {
public static void main(String[] args) {
}
@Test
public void TestList(){
DAO userDAO = new DAO<>(new HashMap<>());
User zs = new User(1, 10, "张三");
User ls = new User(2, 12, "李四");
User ww = new User(3, 13, "王五");
userDAO.save("1",zs);
userDAO.save("2",ls);
userDAO.save("3",ww);
List list = userDAO.list();
// for (User user : list) {
// System.out.println(user);
// }
userDAO.update("3",new User(4, 15, "liyuu"));
userDAO.delete("2");
list = userDAO.list();
for (User user : list) {
System.out.println(user);
}
}
}
class DAO
{
Map map ;
public DAO(Map map) {
this.map = map;
}
public void save(String id, T entity){
map.put(id,entity);
}
public T get(String id){
return map.get(id);
}
public void update(String id,T entity){
map.put(id,entity);
}
public List list(){
List ts = new ArrayList<>();
Set> entries = map.entrySet();
Iterator> iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry next = iterator.next();
ts.add(next.getValue());
}
return ts;
}
public void delete(String id){
map.remove(id);
}
}
class User{
private int id;
private int age;
private String name;
public User(int id, int age, String name) {
this.id = id;
this.age = age;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", age=" + age +
", name='" + name + ''' +
'}';
}
}



