跟王老师学泛型:泛型的应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学泛型:泛型的应用相关的知识,希望对你有一定的参考价值。

泛型的应用

主讲教师:王少华 QQ群:483773664


一、需求

用户在设计类的时候往往会使用类的关联关系,例如,一个人中可以定义一个信息的属性,但是一个人可能有各种各样的信息(如联系方式、基本信息等),所以此信息属性的类型就可以通过泛型进行声明,然后只要设计相应的信息类即可。

技术分享

二、参考代码

1、接口:Info

1
2
public interface Info{     // 只有此接口的子类才是表示人的信息
}

2、联系方式:Contact

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Contact implements Info{   // 表示联系方式
    private String address ;    // 联系地址
    private String telephone ;  // 联系方式
    private String zipcode ;    // 邮政编码
    public Contact(String address,String telephone,String zipcode){
        this.address = address;
        this.telephone = telephone;
        this.zipcode = zipcode;
    }
    public void setAddress(String address){
        this.address = address ;
    }
    public void setTelephone(String telephone){
        this.telephone = telephone ;
    }
    public void setZipcode(String zipcode){
        this.zipcode = zipcode;
    }
    public String getAddress(){
        return this.address ;
    }
    public String getTelephone(){
        return this.telephone ;
    }
    public String getZipcode(){
        return this.zipcode;
    }
    @Override
    public String toString() {
        return "Contact [address=" + address + ", telephone=" + telephone
                ", zipcode=" + zipcode + "]";
    }
}

3、基本信息:Introduction

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Introduction implements Info{
    private String name ;       // 姓名
    private String sex ;        // 性别
    private int age ;           // 年龄
    public Introduction(String name,String sex,int age){
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    public void setName(String name){
        this.name = name ;
    }
    public void setSex(String sex){
        this.sex = sex ;
    }
    public void setAge(int age){
        this.age = age ;
    }
    public String getName(){
        return this.name ;
    }
    public String getSex(){
        return this.sex ;
    }
    public int getAge(){
        return this.age ;
    }
    @Override
    public String toString() {
        return "Introduction [name=" + name + ", sex=" + sex + ", age=" + age
                "]";
    }
}

4、人:Person

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Person<T extends Info>{
    private T info ;
    public Person(T info){      // 通过构造方法设置信息属性内容
        this.info = info;
    }
    public void setInfo(T info){
        this.info = info ;
    }
    public T getInfo(){
        return info ;
    }
    @Override
    public String toString() {
        return "Person [info=" + info + "]";
    }
}

5、测试

1
2
3
4
5
6
7
8
9
10
11
public class GenericPerson{
    public static void main(String args[]){
        Person<Contact> per = null ;      // 声明Person对象
        per = new Person<Contact>(new Contact("北京市","01088888888","102206")) ;
        System.out.println(per);
         
        Person<Introduction> per2 = null ;        // 声明Person对象
        per2 = new Person<Introduction>(new Introduction("李雷","男",24));
        System.out.println(per2) ;
    }
}

三、学习视频网址:

http://edu.51cto.com/course/course_id-6083.html



技术分享




以上是关于跟王老师学泛型:泛型的应用的主要内容,如果未能解决你的问题,请参考以下文章

跟王老师学泛型:泛型拾遗

跟王老师学泛型:定义泛型接口及实现

跟王老师学泛型: 自定义带泛型声明的方法

跟王老师学泛型:限制通配符

跟王老师学泛型:类型通配符

跟王老师学泛型:Java自动装箱与拆箱