一天一个Java基础——泛型

Posted

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基础——泛型的主要内容,如果未能解决你的问题,请参考以下文章

一个小栗子聊聊JAVA泛型基础

JAVA基础之“泛型”

Java泛型:类型擦除

学习笔记Java基础知识——泛型与集合

JAVA 泛型意淫之旅

Java基础:泛型