跟王老师学泛型(十):泛型的应用

泛型的应用

主讲教师:王少华 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

来自为知笔记(Wiz)

时间: 2024-11-05 02:38:37

跟王老师学泛型(十):泛型的应用的相关文章

跟王老师学泛型(八):泛型擦除与转换

泛型擦除与转换 主讲教师:王少华 QQ群:483773664 学习目标: 掌握泛型擦除的含义 理解泛型转换的规则 一.泛型擦除 (一)什么泛型擦除 Java中的泛型基本上都是在编译器这个层次来实现的.在生成的Java字节码中是不包含泛型中的类型信息的.也就是说虚拟机中没有泛型,只有普通类和普通方法 使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉.这个过程就称为类型擦除. 类型擦除的主要过程如下:     1.将所有的泛型参数用其最左边界(最顶级的父类型)类型替换.     2.移除所有

跟王老师学反射(十):静态代理模式

跟王老师学反射(十):静态代理模式 主讲教师:王少华   QQ群号:483773664 学习内容 理解代理机制 掌握静态代理 一.代理模式的概念 代理模式就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理. 代理模式一般涉及到三个角色 抽象角色:声明真实对象和代理对象的共同接口 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能替代真实对象相同的接口以便在任何时刻都能替代真实对

跟王老师学集合(十):操作集合的工具类:Collections

操作集合的工具类:Collections 主讲人:王少华  QQ群号:483773664 Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集合元素实现同步控制等方法. 一.排序操作 (一).方法 Collections提供了如下几个方法用于对List集合元素进行排序 static void reverse(List list):反转指定List集合中元素的顺序 static void shu

跟王老师学注解(二)注解的分类及内建注解

跟王老师学注解(二):注解的分类及内建注解 主讲教师:王少华   QQ群号:483773664 一.注解的分类 在Java中,根据注解的使用方法和用途,可将注解分成3类,分别是 内建注解(也称为基本注解),定义于java.lang包下 元注解(Meta Annotation) 自定义注解 二.内建注解 (一)分类 在JDK5.0及以上的版本的java.lang包下提供了3种标准的注解类型,分别是 @Override: @Deprecated @SuppressWarnings (二)@Overr

跟王老师学MySQL:配置MySQL

跟王老师学MySQL:配置MySQL 主讲教师:王少华   QQ群号:483773664 学习内容 学会配置免安装版的MySQL 一.配置环境变量path 测试配置是否成功 二.修改配置文件 配置文件名称:my-default.ini 路径:D:\mysql-5.7.13 设置的内容:字符编码.mysql所在目录.数据库所在目录.端口号 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

跟王老师学MySQL:MySQL数据类型之小数类型

跟王老师学MySQL:MySQL数据类型之小数类型 主讲教师:王少华   QQ群号:483773664 学习内容 小数类型有哪些以及它们的取值范围 定义语法中的M和D的含义 定点型和浮点型的区别 一.简介 MySQL中使用浮点数类型和定点数类型来表示小数. 浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型). 定点数类型就是DECIMAL型. 二.字节数.取值范围 三.定义语法 1 类据类型 (M,D) M:精度,数据的总长度 D:标度,小数点后的长度 注: 小数点不占长

跟王老师学MySQL:MySQL数据类型之字符类型

跟王老师学MySQL:MySQL数据类型之字符类型 主讲教师:王少华   QQ群号:483773664 学习内容: 字符串类型的种类及其特点 char和varchar的异同 字符串类型是在数据库中存储字符串的数据类型. 字符串类型包括 CHAR. VARCHAR BLOB TEXT 一.char和varchar (一)定义语法 1 字符串类型 (M) 注: 字符串类型:char或varchar M:指定了该字符串最大长度 (二)二者不同之处 char类型长度是固定的,即在创建表时就指定了,其长度

跟王老师学MySQL:MySQL数据类型之日期与时间类型

跟王老师学MySQL:MySQL数据类型之日期与时间类型 主讲教师:王少华   QQ群号:483773664 学习内容 YEAR类型的特点及使用 TIME类型的特点及使用 DATE类型的特点及使用 DATETIME类型的特点及使用 TIMESTAMP类型的特点及使用 MySQL表示日期和时间的数据类型有以下几种: 1.YEAR类型 2.TIME类型 3.DATE类型 4.DATETIME类型 5.TIMESTAMP类型 一.Year类型 (一)简介 year使用一个字符串来表示年份 MySQL中

跟王老师学MySQL:MySQL数据类型常见问题及解答

跟王老师学MySQL:MySQL数据类型常见问题及解答 主讲教师:王少华   QQ群号:483773664 学习内容 整数类型和浮点类型的异同 浮点数类型和定点数类型的异同 char和varchar类型的异同 时间和日期类型的异同 text和blob的异同 存储路径字符串的注意事项 mysql如何存储boolean类型 null的处理 在MySQL中创建表时,需要考虑为字段选择哪种数据类型是最合适的.选择了合适的数据类型,会提高数据库的效率. 一.整数类型和浮点类型 整数类型和浮点类型最大区别是

跟王老师学MySQL:MySQL数据类型之整数类型

跟王老师学MySQL:MySQL数据类型之整数类型 主讲教师:王少华   QQ群号:483773664 MySQL的数据类型包括整数类型.浮点数类型.定点数类型.日期和时间类型.字符串类型和二进制数据类型. 学习目标 整型包括哪些类型以及它们的取值范围 以tinyint为例,讲解了定义整型的三个属性 一.简介 整数类型是数据库中最基本的数据类型. 标准SQL中支持INTEGER和SMALLINT这两类整数类型. MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT.MEDIUMIN