1.泛型实际上就是能够代表任何引用数据类型的特殊“类型“,我们自由的传入类型
2.泛型和static水火不容,因为我们的static成员是在类信息加载的时候就已经定义好了,而我们指定泛型是在实际使用的是否,比如我们定义了一个泛型属性,这个属性作为类的信息加载的时间肯定比我们指定属性泛型的数据类型的时间早
3.对于泛型数组,我们可以先定义,比如定义T[] arr;但是我们只能先让arr数组当个空壳,因为数组是对同一数据类型的管理,我们只有在传入了其泛型代表的数据类型后才能给他长度(容量)
4.需要稍微注意的是,方法使用泛型和泛型方法不是同一个概念,泛型使用方法,一般是该方法是一个泛型类,已经指定好了泛型,而泛型方法则是方法本身就具有泛型参数
5.泛型相对于前面的集合的底层源码分析还是相对简单一些的
public class test {
public static void main(String[] args) {
Dota<User> userDota = new Dota<>();
userDota.save("1",new User(1,22,"ys"));
userDota.save("2",new User(2,40,"yh"));
userDota.save("3",new User(3,45,"ght"));
userDota.delete("2");
userDota.update("3",new User(3,44,"dxd"));
List<User> list = userDota.list();
System.out.println(list);
}
}
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 + '\'' +
'}';
}
}
class Dota<T>{
private Map<String,T> map = new HashMap();
public T get (String id){
return map.get(id);
}
public void update(String id,T entity){
map.put(id,entity);
}
public List<T> list(){
ArrayList<T> arrlist = new ArrayList();
Collection<T> values = map.values();
for (T t : values) {
arrlist.add(t);
}
return arrlist;
}
public void delete(String id){
map.remove(id);
}
public void save(String id,T entity){
map.put(id,entity);
}
}

被折叠的 条评论
为什么被折叠?



