一天一个Java基础——泛型
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一天一个Java基础——泛型相关的知识,希望对你有一定的参考价值。
这学期的新课——设计模式,由我仰慕已久的老师传授,可惜思维过快,第一节就被老师挑中上去敲代码,自此在心里烙下了阴影,都是Java基础欠下的债
这学期的新课——算法设计与分析,虽老师不爱与同学互动式的讲课,但老师讲的挺好,不过由于数据结构欠缺课听的有点烧脑,都是数据结构欠下的债
这学期的新课——英语口语,虽外教老师风骚逗趣浪荡不羁爱自由,但我辈词汇量欠缺,表明淡定说yeah,但心中一万匹草泥马策马奔腾,都是英语欠下的债
1.泛型类
实体类(容器类),经常重用的类,下面是一个没有用泛型的实体类:
1 public class User{ 2 private String username; 3 private int number; 4 public String getUsername() { 5 return username; 6 } 7 public void setUsername(String username) { 8 this.username = username; 9 } 10 public int getNumber() { 11 return number; 12 } 13 public void setNumber(int number) { 14 this.number = number; 15 } 16 public String toString() { 17 return "User [username=" + username + ", number=" + number + "]"; 18 } 19 public User(String username, int number) { 20 super(); 21 this.username = username; 22 this.number = number; 23 } 24 public User() { 25 super(); 26 } 27 }
属性number可以作为存放学生的证件号码,如果是int类型,11位的学号是够用了,但如果是身份证呢,一是长度不够,二是存在字符X,所以就需要重定义,那么这样这个实体类的重用性就很低了。
但如果用上泛型,就是这样的:
1 public class User<K,V> { 2 private K usrename; 3 private V number; 4 public K getUsrename() { 5 return usrename; 6 } 7 public void setUsrename(K usrename) { 8 this.usrename = usrename; 9 } 10 public V getNumber() { 11 return number; 12 } 13 public void setNumber(V number) { 14 this.number = number; 15 } 16 public String toString() { 17 return "User [usrename=" + usrename + ", number=" + number + "]"; 18 } 19 public User(K usrename, V number) { 20 super(); 21 this.usrename = usrename; 22 this.number = number; 23 } 24 public User() { 25 super(); 26 } 27 }
这样的好处就是:
1 public class Test1 { 2 public static void main(String[] args) { 3 User<String,Integer> u = new User<String,Integer>(); 4 u.setUsrename("zhengbin"); 5 u.setNumber(2013734217); 6 User<String,String> u1 = new User<String,String>(); 7 u1.setUsrename("zhengbin"); 8 u1.setNumber("4*****19951029****"); 9 System.out.println(u); 10 System.out.println(u1); 11 } 12 }
运行结果:
User [usrename=zhengbin, number=2013734217]
User [usrename=zhengbin, number=41****19951029****]
注意:
(1) 按照惯例,像E或T这样的单个大写字母用于表示一个形式泛型类型
(2)
2.泛型接口
3.泛型方法
以上是关于一天一个Java基础——泛型的主要内容,如果未能解决你的问题,请参考以下文章